Git:将分支中的最后一次提交移动到主分支

6

我有两个提交:A和B。它们互相独立,包含不同的文件。我有两个分支:masterbranch1

master: A
branch 1: A, B

我需要删除 branch 1 并将提交 B 移动到 master。我尝试使用 git cherry-pick B 来完成此操作,但它只是将 B 复制到 A 中,而我需要它具有相同的提交号码并且最重要的是要保留那里的注释!是否有任何方法?我已经查看了不同的答案,对我的情况不确定该怎么处理。
1个回答

10
你有两个选项:合并变基

合并

将 branch1 合并到 master 是最简单的操作,也是我推荐的选项。但是,它会作为一个新的提交出现在主分支上,具有不同的提交 ID

我们将从 branch1 中获取新的提交,并尝试将它们作为一个新的变更集合合并到 master 中,然后提交。这将保留 branch1 和 master 的历史记录。

从命令行中,您需要执行以下步骤:

1)首先检出您希望合并到的分支

git checkout master

2) 现在使用--no-ff选项将您的分支合并。

git merge --no-ff branch1

3)如果需要,您现在可以删除旧分支。

git branch -d branch1

变基

另一种方法是执行变基。

通过将您的分支1变基到主分支,您将有效地重新播放分支1的提交历史记录到主分支上。之后,看起来好像你最初已经将提交'b'检入主分支,保留了你的提交ID

同样,在命令行中,您需要执行以下步骤:

1)首先,检出您想要变基的分支 进入

git checkout master

2) 现在将您的分支变基到主分支

git rebase branch1

注意 - 重新设置基准线存在一些注意事项,如果您不完全了解其工作原理,则最好使用合并而不是重新设置基准线。
如果有疑问,请合并而不是重新设置基准线。

没问题。值得注意的是,如果您从合并命令中删除--no-ff选项,在您的情况下它将实现与变基相同的效果。不过我对此的后果不够熟悉,也许其他人可以编辑/详细说明一下。 - Hywel Rees

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接