465

newbranchmastergit 中的分支创建了一个新分支。现在我已经做了一些工作,想合并newbranchmaster;但是,newbranchnewbranchmaster.

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

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

我可以使用 gitmerge来代替吗?

git merge newbranch <commitid>
4

5 回答 5

731

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

git merge <commit-id>

您想在分支中获取commit-id的最后一次提交的哈希值在哪里。newbranchmaster

你可以通过git help <command>. 就是这种情况git help merge。文档说mergecommand 的最后一个参数是<commit>...,因此您可以传递对任何提交甚至多个提交的引用。虽然,我自己从来没有做过后者。

于 2011-11-22T07:03:51.340 回答
20

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

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 上工作。

于 2017-12-06T05:16:12.463 回答
2

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

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

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

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

于 2019-07-29T08:37:11.123 回答
0

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

git reset --hard <commit Id><-- 要合并的提交

于 2021-05-25T07:37:00.647 回答
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 然后引用分支而不是它工作的提交。

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

于 2020-07-23T08:33:06.133 回答