【问题标题】:Git: How to merge a branch except a commit?Git:如何合并除提交之外的分支?
【发布时间】:2017-02-09 18:01:46
【问题描述】:

我们有一个 PR 一切都好,除了 1 次提交,是否可以只合并除特定提交之外的所有内容?

【问题讨论】:

  • 恢复分支中的提交,然后进行合并。适合你吗?
  • 另一种选择是拒绝 PR 并在没有提交的情况下请求新的 PR。

标签: git bitbucket pull-request


【解决方案1】:

如果你想跳过的提交是分支中的最后一个提交,你可以合并它的父提交。

branch ...   A --- B --- C
            /       \
master ... O   ...   git merge branch^

如果不是,您可以git cherry-pick 每次提交,除了错误的提交。一个快捷方式是使用git rebase -i 并删除您不想要的行。

branch ...   A --- B --- C
            /
master ... O ...

$ git rebase -i master branch
(inside editor)
pick 0123456789 A  (delete this line)
pick 3456789abc B
pick 6789abcdef C
(save and exit)

branch ...        B' --- C'
                 /
master ... O ...

你也可以合并然后恢复提交。

$ git merge branch
$ git revert A

branch ...   A --- B --- C
            /             \
master ... O      ...      merge --- ∀

或者在分支中revert然后合并。

$ git checkout branch
$ git revert A
$ git checkout master
$ git merge branch

branch ...   A --- B --- C --- ∀
            /                   \
master ... O         ...         merge

【讨论】:

    【解决方案2】:

    您可以合并工作树中的分支,并在提交之前还原不需要的提交。

    git merge --no-commit branch
    git revert --no-commit unwanted_commit
    git commit -m "Merged branch @987654327 @unwanted_commit)"

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 2017-02-27
      • 2012-03-02
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      相关资源
      最近更新 更多