Git 合并到特定的提交

Git 合并到特定的提交,git,git-merge,git-cherry-pick,Git,Git Merge,Git Cherry Pick,我从git中的master分支创建了一个名为newbranch的新分支。现在我已经做了一些工作,想把newbranch合并到master;但是,我对newbranch做了一些额外的更改,我想将newbranch合并到上次提交到master的第四个 我使用了cherry pick,但它显示了使用正确选项的信息: git checkout master git cherry-pick ^^^^HEAD newbranch 我可以用gitmerge来代替它吗 git merge newbra

我从git中的
master
分支创建了一个名为
newbranch
的新分支。现在我已经做了一些工作,想把
newbranch
合并到
master
;但是,我对
newbranch
做了一些额外的更改,我想将
newbranch
合并到上次提交到
master
的第四个

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

git checkout master    
git cherry-pick ^^^^HEAD newbranch
我可以用git
merge
来代替它吗

git merge newbranch <commitid>
git合并新牧场

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

git merge <commit-id>
git合并
其中,
commit id
是希望在
master
分支中获得的来自
newbranch
的最后一次提交的哈希值


通过执行
git-help
,您可以了解有关任何git命令的更多信息。在这种情况下,它是git help merge。文档指出,
merge
命令的最后一个参数是
,因此您可以传递对任何提交甚至多个提交的引用。不过,我自己从未做过后者。

为了保持分支干净,您可以这样做:

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
git checkout newbranch
新罕布什尔州吉特分行2
git reset——硬#要合并的提交
切换到主分支
吉特合并新牧场
git checkout newbranch2

这样,newbranch将在合并到master的位置结束,您将继续处理newbranch2。

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

git merge --no-commit <commit-id>
git合并--不提交
git merge--continue
只能在合并导致冲突后运行


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

最近我们遇到了类似的问题,必须以不同的方式解决。我们必须将两个分支合并为两个提交,这两个提交不是两个分支的负责人:

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,然后引用分支,而不是它工作的提交


我不清楚这其中有多少是迷信或是什么让它起作用,但这种“长期方法”可能会有所帮助。

要将特定分支合并到您的主分支,只需执行以下操作:


git reset--hard
不仅是单个提交,而且是提交id之前的所有提交。是的,它将合并
newbranch
的所有提交,因为它的历史从
master
commit id
分支。您可以将
git merge
视为将以
commit id
结尾的未命名分支合并到当前分支中。我可以使用commit id在master之外的两个本地分支之间进行合并吗?@skt,您可以在使用
git merge
之前,只在您想要合并到的本地分支上。也就是说,您想将commit 18a6fac从分支b2合并到分支b1,只需执行git checkout b1;git merge 18a6fac这似乎不起作用,如果我在一个我想合并到的分支上,并且有其他分支提交了a B和C,而我在C中合并,它只得到在C中所做的更改,而不是a和B。