合并到特定的提交


372

newbranchmastergit中的分支创建了一个新分支。现在我已经做了一些工作,想合并newbranchmaster; 但是,我对进行了一些额外的更改,newbranch并希望合并newbranch到的第四个提交master

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

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

我可以用git merge代替吗?

git merge newbranch <commitid>

Answers:


592

当然,在master分支中,您需要做的是:

git merge <commit-id>

您要进入分支commit-id的最后一次提交的哈希值在哪里?newbranchmaster

您可以通过执行来找到有关任何git命令的更多信息git help <command>。就是这种情况git help merge。并且文档说mergecommand 的最后一个参数是<commit>...,因此您可以将引用传递给任何提交甚至多个提交。不过,我本人从未做过后者。


30
不仅是一次提交,而且所有之前的提交commit-id
Dau

53
是的,它将合并newbranch自其历史从分支到分支master为止的所有提交。您可以想到将一些未命名的分支合并到当前分支中。commit-idmastergit merge <commit-id>commit-id
KL-7,7

2
我可以使用提交ID在master以外的两个本地分支之间合并吗?
skt

1
@skt,可以,只是在使用之前要合并到的本地分支中git merge。也就是说,说您想将分支b2中的提交18a6fac合并到分支b1中,只是这样做git checkout b1; git merge 18a6fac
XioRal

1
这似乎并没有工作,如果我是一个分支我要合并到,有š一些其他分支与提交AB和C,我用C合并它只是变得不A和B.用C所做的更改,
ggb667

12

要保持分支干净,可以执行以下操作:

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。


1

在命令下面运行到当前分支文件夹中,以从此分支合并<commit-id>到当前分支,--no-commit不要自动进行新的提交

git merge --no-commit <commit-id>

git merge --continue 仅在合并导致冲突后才能运行。

git merge --abort 中止当前的冲突解决过程,并尝试重构合并前状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.