【问题标题】:Force merge branch from specific commit从特定提交强制合并分支
【发布时间】:2018-04-26 16:45:04
【问题描述】:

我有一个分支“mybranch”,它是从 master 创建的,但过去几个月没有更新。我想从主分支的特定提交更新“mybarch”。我想忽略“mybarch”中的任何其他内容,并使其与主分支的特定提交保持同步。我怎样才能做到这一点?我在试这个,听起来可以吗?这导致了许多冲突,而我想接受来自主人的东西。

git checkout mybranch
git merge --squash master <commit-id>

【问题讨论】:

  • 如果分支的历史不重要你可以git checkout -B mybranch &lt;commit-id&gt;
  • @Opal 如果我没记错,这将创建新分支,但我想更新现有分支
  • 是的,它会的;)这就是为什么我提到历史不相关。怎么样:git merge --squash -X theirs &lt;commit-id&gt;..&lt;master-head&gt;
  • @Opal 试过这个,但似乎还有另一个我之前没有注意到的问题 - 假设 master 有 A+B 而 mybranch 有 A+C,合并后我会得到 A+B+我想要 mybranch 的 C 与 master 相同,即 A+B

标签: git merge git-merge


【解决方案1】:

假设masterA+BmybranchA+C,合并后我将得到A+B+C 我想要mybranchmaster 相同,即A+B

然后你就可以用一个of the --theirs strategy模拟合并:

git checkout -b tmp master
git merge -s ours mybranch           # ignoring all changes from mybranch
git checkout mybranch
git merge tmp                        # fast-forward to tmp HEAD
git branch -D tmp                    # deleting tmp

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 2013-06-28
    • 2017-02-26
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多