分支命令
- 内容创建一个sub分支: git branch sub
- 切换到sub分支:git checkout sub
- 合并以上两条命令,创建并切换:git checkout -b sub
- 查看分支:git branch
git branch命令会列出所有分支,当前分支前面会标一个*号
- 合并sub分支到当前分支:git merge sub
- 删除sub分支:git branch -d sub
合并冲突
- 有时候当两个分支都做了修改,再合并会产生冲突,这时候切换到主分支,打开文件,手动修改成自己想要的,再删除子分支。
分支管理策略
- git merge --no-ff -m “merge with no-ff” sub:从分支历史上就可以看出分支信息
- git log --graph --pretty=oneline --abbrev-commit:log查看分支合并情况
- master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活
- 干活都在子分支上,上面版本都是不稳定的,当发布版本的时候,再将子分支合并到master上
- 小伙伴都在子分支上的分支上工作,每个人有自己的分支,时不时往子分支上面合并即可
Bug修复
- master上发现bug的时候,我们先保存当前的工作现场:git stash
- 切换到master上,创建bug分支,修改完,再合并到master上
- 再切换到自己的工作分支上,恢复现场:
- git stash apply:恢复之后,stash内容还保存,想删除,得手动:git stash drop
- git stash pop:恢复同时也把stash里缓冲的内容删除
- git stash list:查看当前的stash列表
- git stash apply stash/drop @{0}:恢复/删除指定的stash
新增功能
- 当想新增一功能时,应该在master上在建一个分支,完成再合并到master上
- 如果还没有合并,功能不需要了,想删除这个分支:git branch -D sub
多人协作
- 推送分支
-
就是把本地该分支上的所有提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
-
git push origin master :推送master分支
-
git push origin sub:推送sub分支
-
如果这个时候,队友已经推送了,碰巧你也修改了,想推送上去。这时候会推送失败,因为你队友已经推送了最新的,你再推送会有冲突,解决办法:
(1)git pull 把最新的抓取下来,在本地合并。如果提示:no tracking information,再指定本地的dev和远程的origin/dev连接:git branch --set-upstream-to=origin/sub sub
(2) 重新 git pull ,如果有冲突,手动解决冲突,再push分支。
- 抓取分支
- git clone git@github. com:账号名/远程库名.git
git clone h ttps://github.com/账号名/远程库名 - 默认在本地只能看到一个master分支,要想看到远程库的其他分支,在本地创建远程库的其他分支:git checkout -b sub origin/sub,这时候才能看到远程库的dev分支,然后再本地开发sub,再推送。