我在git中从newbranch
分支创建了一个名为master
的新分支。现在我做了一些工作,想要将newbranch
合并到master
;但是,我对newbranch
做了一些额外的更改,我希望将newbranch
合并到最后一次提交到master
。
我使用了cherry-pick
,但它显示了使用正确选项的消息:
git checkout master
git cherry-pick ^^^^HEAD newbranch
我可以使用git merge
代替吗?
git merge newbranch <commitid>
答案 0 :(得分:501)
当然,在master
分支中,您需要做的就是:
git merge <commit-id>
其中commit-id
是您希望newbranch
分支中master
的最后一次提交的哈希值。
您可以通过git help <command>
找到有关任何git命令的更多信息。就是那种情况git help merge
。并且文档说merge
命令的最后一个参数是<commit>...
,因此您可以将引用传递给任何提交甚至多次提交。虽然,我自己从未做过后者。
答案 1 :(得分:6)
为了保持分支清洁,您可以这样做:
git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2
这样,newbranch将在它合并为master的地方结束,并继续处理newbranch2。
答案 2 :(得分:0)
运行以下命令进入当前分支文件夹以从此<commit-id>
合并到当前分支,--no-commit
不会自动进行新提交
git merge --no-commit <commit-id>
git merge --continue
仅在合并导致冲突后才能运行。
git merge --abort
中止当前的冲突解决过程,并尝试重构合并前状态。
答案 3 :(得分:0)
最近,我们遇到了类似的问题,不得不以不同的方式解决它。我们必须将两个分支合并为两个提交,而这两个提交都不是两个分支的负责人:
branch A: A1 -> A2 -> A3 -> A4
branch B: B1 -> B2 -> B3 -> B4
branch C: C1 -> A2 -> B3 -> C2
例如,我们必须将分支A合并到A2,将分支B合并到B3。但是分支C具有来自A和B的小穗。使用A2和B3的SHA时,似乎会感到困惑,因为本地分支C具有相同的SHA。
为了避免任何歧义,我们在本地删除了分支C,然后从提交A2开始创建了分支AA:
git co A
git co SHA-of-A2
git co -b AA
然后我们从提交B3创建了一个分支BB:
git co B
git co SHA-of-B3
git co -b BB
那时,我们合并了两个分支AA和BB。通过删除分支C,然后引用分支而不是它起作用的提交。
我不清楚其中有多少是迷信或实际上是什么使它迷惑了,但是这种“长距离的方法”可能会有所帮助。
答案 4 :(得分:0)
要将特定分支合并到您的主分支,只需执行以下操作:
git reset --hard <commit Id>
<-- 要合并的提交