将分支与主分支合并,包含所有更改?

3

有时,我会在一个分支上工作,想将该分支的所有更改合并到我的主分支中,以便主分支本质上成为我刚刚使用的分支的克隆。有没有一种简单的方法来更新主分支,使得分支的所有更改都合并到主分支中?我希望的行为是主分支变成分支的精确克隆。通常我会逐个冲突地合并到主分支中,但是否有更容易的方法来做这件事呢?感谢您的时间。


谢谢,这正是我在寻找的。 - drbunsen
2个回答

1

1
请注意,当您执行此操作时,您将失去在主分支中进行的所有提交,这些提交在分支中不存在。(您可以找回它们,但它们不再属于任何分支。) - ellotheth
我认为这就是重点。 - Denys Séguret
可能是这样的。(我觉得这个问题有点不太清楚;“分支的克隆”在技术上意味着一个独立的副本。) - ellotheth
“Clone” 是一个不太恰当的词汇选择。我原本想表达的是分支的确切版本。 - drbunsen

1

如果您想保留历史记录,请使用ours合并策略:

git checkout branch
git merge -s ours master

如果您不关心主分支的历史记录,请重置它:

git checkout master
git reset --hard branch

(这将丢弃您所有的本地更改,并使主提交不可达!)

如果您在主分支中没有任何提交不在您的分支中,则可以将主分支快进到您的分支:

git checkout branch
git merge master
# or `git merge --ff-only master` to only allow fast-forward

最后一个例子将把主分支合并到分支中,而不是相反,是吗?那个标志应该是 --ff-only 吗? - SpinUp __ A Davis
@spinup:是的,--ff-only,感谢您指出 :) 至于合并的方向,OP问道“[这样]主分支将成为分支的精确克隆”,这就是这些命令所做的。 - knittl

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