繁体   English   中英

在不更改主分支的情况下合并 Git 分支

[英]Merge a Git fork without changing master branch

我的最新分支是master (提交 M)。 我必须从旧提交(提交 O1)创建分支并在提交(提交 O3)上进行一些提交。 现在,我想在master上合并old以保存它,但我想保留master上的最后一次提交(提交 M)。

我怎样才能做到这一点?

对此有两个答案:

  • 在 git 中,提交由 hash 标识,如果(其中)其父项发生更改,该提交将更改。

有了这个观点:如果你引入了一些将masterold合并在一起的东西,你不能拥有与master上的当前提交相同的 hash ,你将始终创建一个新的提交 object

  • 但是,关于提交的内容,您可以选择存储您认为合适的任何内容。

考虑到这一点:您可以创建一个合并提交(一个将有两个父母:您当前的masterold ),但它的内容与您当前的master完全相同。

实际上有一个git merge选项可以做到这一点:

# from branch 'master' :
git checkout master

# create a merge commit, but ignore all changes that come from 'old' :
git merge -s ours old

这是内置合并策略列表的链接,这是关于ours的部分:

我们的

这解决了任意数量的头,但合并的结果树始终是当前分支头的树,有效地忽略了所有其他分支的所有更改。 它旨在用于取代分支的旧开发历史。 请注意,这与递归合并策略的-Xours选项不同。

示例部分包含:

  • 使用ours的合并策略将obsolete的分支合并到当前分支中:
 $ git merge -s ours obsolete

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM