一、拉取代码
- git clone 仓库地址; 一般代码仓库会有master和dev分支,git clone后代码一般是在master分支,可以使用git branch -a查看本地和远程分支
- git checkout 远程分支名; 切换到远程分支
- git checkout -b 分支名; 创建并且切换到新建的本地分支上,(是git branch 分支名,git checkout 分支名,的合并命令)
- git pull; 未设置追踪时唤起本地追踪远程提示,bash提示:git branch --set-upstream-to=origin/ dev
- 本地追踪远程,从clone代码到新建本地开发分支,已经完成了,可以开始工作了
git checkout remotes/origin/dev
git checkout -b dev
git pull
git branch --set-upstream-to=origin/dev dev
git pull
二、提交代码
- git pull 多人在同一分支工作时先拉取代码,可以避免自动merge,保持分支线的美观
- git add . 或者(git add 文件名)
- git commit -m ''
- git pull 防止多人在同一个分支上工作时,快要下班时,你commit时别人push了代码
- git push
三、合并代码
当项目按照功能分支进行开发时,可以有两种方式,1:本地先merge再push;2:先push再远程merge
-
方式一:可以不建远程分支
- git checkout dev
- git pull
- git merge my-feat //在本地把my-feat合并到本地dev分支
- git push
-
方式二:必须有远程分支
- 正常提交代码
- 一般是在gitlab上发起merge request,同事review代码后,点击merge
四、删除分支
功能开发完成后,可以删除该功能分支,删除分支需要切换到其他分支
- git branch -D 分支名 删除本地分支
- git push origin :分支名 删除远程分支(或者git push origin --delete 分支名)
五、git常用操作
-
git stash 暂存代码
-
git stash pop 弹出代码
-
git stash list 查看stash列表
-
git status 查看状态
-
git diff 查看改了那些代码
-
git branch -vv 查看本地分支和远程分支的版本差异,落后了或超前了几个版本
-
git log 查看log
-
git log --graph 查看log分支线
-
git reset --soft log的hash值 代码回滚到指定版本,不删除工作空间改动代码,撤销commit,不撤销git add .
-
git reset --hard log的hash值 代码回滚到指定版本,删除工作空间改动代码,撤销commit,撤销git add .
-
git commit --amend commit注释写错了,进入vim,修改注释
六、可能遇到的问题
-
代码仓库过大,一般大于1G时,可能clone不下来,在执行git clone命令时报错:fatal: early EOF,可以先clone最近一次的代码
- git clone --depth 1 仓库地址 //执行部分clone
- git fetch --unshallow
- git pull --all
-
git branch -a看不到远程分支
- git remote set-branches --add origin [分支名称]
- git fetch origin [分支名称]
- git branch -a