在使用Git时,我们经常会创建两个或两个以上的分支,但在合并分支就出现问题了。
问题1(单文件合并):
分支A,分支B,开发时使用分支B,开发完成提交,并合并到分支A时,但此时发现,只想合并某1个文件或某几个文件到分支A,这时候再使用 Merge命令合并就不行,可以使用下命令进行合并。
#切换到分支Agit checkout A #把B分支的a.html合并到A分支git checkout --patch B a.html
在执行第二个命令时 中间会给出文件的内容然后说 not apply to index! ,直接 y 下去,就完成了合并。
问题2(单commit合并):
分支A,分支B,开发时使用分支B,开发完成提交,并合并到分支A时,但此时发现,只想合并某1个commit或某几个commit到分支A,这时候再使用 Merge命令合并就不行,可以使用下命令进行合并。
#切换到分析Bgit checkout B#查看commit log日志,主要记录commit编号git log#切换到分析Bgit checkout A#把62ecb3编号的commit合并到A分支git cherry-pick 62ecb3
问题3(系列commit合并,此方法未验证)
在一些特性情况下,合并单个commit并不够,你需要合并一系列相连的commits。这种情况下就不要选择cherry-pick了,rebase 更适合。还以上例为例,假设你需要合并B分支的commit76cada ~62ecb3 到A分支。
#切换到分析Bgit checkout B#需要基于B创建一个新的分支,并指明新分支的最后一个commitgit checkout -bnewbranch 62ecb3 #rebase这个新分支的commit到master(--ontomaster)。76cada^ 指明你想从哪个特定的commit开始git rebase --ontomaster 76cada^