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)

处理步骤

  1. 查看状态,确认基本信息:git status
  2. 查看冲突文件,确认冲突内容:cat
  3. 在HEAD分支(一般为master分支)修改冲突文件内容,add到暂存区,然后commit到仓库。
  4. 查看分支合并信息:git log --merges

解决完冲突后,可以重新建立branch分支 或 在branch分支git merge master ,继续工作。

4 - 参考消息

posted @ 2017-01-28 23:18  Anliven  阅读(1043)  评论(0编辑  收藏  举报