合并到特定的提交

时间:2011-11-22 06:58:24

标签: git git-merge git-cherry-pick

我在git中从newbranch分支创建了一个名为master的新分支。现在我做了一些工作,想要将newbranch合并到master;但是,我对newbranch做了一些额外的更改,我希望将newbranch合并到最后一次提交到master

我使用了cherry-pick,但它显示了使用正确选项的消息:

git checkout master    
git cherry-pick ^^^^HEAD newbranch

我可以使用git merge代替吗?

git merge newbranch <commitid>

5 个答案:

答案 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> <-- 要合并的提交