Open shuangmianxiaoQ opened 5 years ago
Git 分支作为 Git 最核心的部分,本篇单独对 Git 分支进行总结!
Git
参考:创建与合并分支 - 廖雪峰 Git
dev
master
git branch
*
git branch <name>
git checkout <name>
git checkout -b <name>
git merge <name>
Fast-forward
git branch -d <name>
参考:解决冲突 - 廖雪峰 Git
git log --graph --pretty=oneline --abbrev-commit
参考:分支管理策略 - 廖雪峰 Git
git merge --no-ff -m "merge with no-ff" dev
--no-ff
commit
Fast forward
参考:Bug 分支 - 廖雪峰 Git
bug
git stash
git stash pop
git stash list
git stash apply
stash
git stash drop
参考:Feature 分支 - 廖雪峰 Git
git branch -D <name>
参考:多人协作 - 廖雪峰 Git
git remote -v
git push origin <branch-name>
git pull
feature
git checkout -b <branch-name> origin/<branch-name>
git branch --set-upstream-to=origin/<branch-name> <branch-name>
多人写作的模式通常是这样:
no tracking information
参考:Rebase - 廖雪峰 Git
push
创建和合并分支
dev
分支,并切换到该分支dev
分支上提交一次修改dev
分支合并到master
分支dev
分支git branch
当前分支前面会标一个*
号git branch <name>
git checkout <name>
git checkout -b <name>
git merge <name>
合并时提示信息是Fast-forward
,表示以“快进模式“合并,就是直接将master
分支指向dev
的当前提交git branch -d <name>
解决冲突
Git
合并失败的文件手动编辑为我们希望的内容,再提交git log --graph --pretty=oneline --abbrev-commit
分支管理策略
git merge --no-ff -m "merge with no-ff" dev
:合并分支时,加上--no-ff
参数就可以用普通模式合并,合并时会生成一个新的commit
,从分支历史上可以看出分支信息;而Fast forward
模式下删除分支后会丢掉分支信息,看不出来曾经做过合并master
分支应该是非常稳定的,仅用于发布版本,平时不能在上面干活dev
分支上,到发布版本时,将dev
分支合并到master
上dev
分支上干活,每个人都有自己的分支,往dev
分支上合并就可以了Bug 分支
bug
时,通过创建新的bug
分支进行修复,然后合并,最后删除临时分支git stash
“储藏”起来,然后去修复bug
,最后再git stash pop
,回到工作现场 查看“储藏”的工作现场:git stash list
恢复工作现场有两个办法:一是用git stash apply
恢复,恢复后stash
内容并不会删除,需要用git stash drop
来删除;另一种是用git stash pop
,恢复的同时把stash
的内容也删了Feature 分支
git branch -D <name>
强行删除多人协作
git remote -v
git push origin <branch-name>
,如果推送失败,先用git pull
拉取远程的提交master
分支是主分支,要时刻与远程同步dev
是开发分支,团队成员都需要在上面工作,也需要yun远程同步bug
分支只用于在本地修复bug
就没必要推送到远程了feature
分支是否推送到分支,取决于是否和团队成员合作在上面开发git checkout -b <branch-name> origin/<branch-name>
,本地和远程分支名称最好一致 默认情况下,从远程库克隆的仓库在本地只能看到master
分支git branch --set-upstream-to=origin/<branch-name> <branch-name>
git pull
,如果有冲突,要先处理冲突多人写作的模式通常是这样:
git push origin <branch-name>
git pull
试图合并git push origin <branch-name>
推送就能成功 如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,使用命令git branch --set-upstream-to=origin/<branch-name> <branch-name>
Rebase
push
的分叉提交历史整理成直线