【问题标题】:Can I undo changes that were made in other git branch?我可以撤消在其他 git 分支中所做的更改吗?
【发布时间】:2018-11-01 08:43:00
【问题描述】:

我正在开发一个名为 x 的 git 分支。前段时间我不得不从分支y 合并到该分支的更改中。现在,既然我已经完成了我的工作,我想从分支x 发布我的更改,所以提出一个合并请求。但是分支y 中的功能尚未准备好投入生产,但它们将包含在我的分支中(但我不再需要它们) - 是否有一个简单的解决方案来“取消合并”具有当我将分支y 合并到我的分支中时制作了? (所以它们不会包含在 MR 中)

【问题讨论】:

    标签: git gitlab git-branch git-merge branching-and-merging


    【解决方案1】:

    您可以创建一个仅包含您希望的更改的新分支,然后从中创建一个新的拉取请求:

    假设您希望从 y 创建一个新分支,该分支恢复为提交 1234,然后将其合并到 x

    git checkout -b new_branch upstream/master
    git cherry-pick 1234
    git push -u origin new_branch
    

    然后创建从new_branchx 等的拉取请求。

    (我可能会误解 x -> y 或 y -> x 的顺序,但这并不重要。想法是创建一个新分支并根据您希望的更改进行挑选)

    【讨论】:

      【解决方案2】:

      您可以删除从分支 y 合并的提交。例如,使用git rebase:

      pick bba85d4 aaaa
      d 7355f82 bbbb
      d 03cac01 cccc
      pick 6f43992 dddd
      pick 37eabec eeee
      

      “d”表示您要删除这两个提交。现在保存文件,然后推送更改。

      如果您不想重写历史记录,则可以创建一个新分支,并 cherry-pick 您要包含的提交,如其他答案中所建议的那样。

      【讨论】:

        猜你喜欢
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-30
        • 2016-12-07
        • 2018-08-12
        • 2016-10-03
        • 2021-04-12
        相关资源
        最近更新 更多