Git - 分支
1 - 分支
分支模型定义了创建、合并、删除分支的场景与时机。
不同的分支模型对应了不同的分支管理策略。
- master主分支主要用来发布新版本,应该保持稳定,并且时刻与远程库同步,一般情况下不允许在master主分支直接做修改。
- 通常都是在新建的branch分支修改,确认改动稳定后,合并到主分支master,然后把主分支master推送到远程库。
- 例如:一个bug通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除。
创建分支时,要先使用git status
查看当前分支状态,在确认合适的情况下创建分支。
合并分支时,
- Fast forward模式,删除分支后,会丢掉分支信息,就看不出来曾经做过合并
- 禁用Fast forward模式,在merge时生成一个新的commit,从分支历史上就可以看出分支信息
2 - 管理分支
git branch # 显示本地分支,当前分支有*号标识
git branch -a # 显示所有分支
git branch -r # 显示所有远程分支
git branch <branch_name> # 创建分支
git checkout <branch_name> # 切换分支
git checkout -b <branch_name> # 创建并切换到新分支
git checkout -b <branch> <tag> # 新建一个分支,指向某个tag
git cherry-pick <commit> # 选择一个commit合并到当前分支
git merge <branch_name> # 合并指定分支到当前分支
git branch --delete <branch name> # 合并完成后着删除branch分支
git merge --no-ff -m "comments" <branch_name> # 禁用Fast forward模式合并分支,加上-m参数以便填写一个新的commit描述
git branch -d <branch_name> # 删除本地分支
git branch -D <branch_name> # 强行删除没有被合并过的本地分支
git push origin --delete <remote_branch_name> # 删除远程分支
- 查看分支合并信息:
git log --merges
- 图形化显示分支合并日志:
git log --oneline --graph
- 图形化显示分支的合并历史:
git log --graph --oneline --decorate --all
3 - 解决分支冲突
示例:
如果出现冲突,会显示如下类似报错,
Troubleshooting about conflict during merge
Error messages: "Automatic merge failed; fix conflicts and then commit the result."
Git bash 命令行也会显示冲突提示,形如:(master|MERGING)
处理步骤
- 查看状态,确认基本信息:git status
- 查看冲突文件,确认冲突内容:cat
- 在HEAD分支(一般为master分支)修改冲突文件内容,add到暂存区,然后commit到仓库。
- 查看分支合并信息:
git log --merges
解决完冲突后,可以重新建立branch分支 或 在branch分支git merge master
4 - 参考消息
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。