【问题标题】:Revert some of commits and separating them into new branch还原一些提交并将它们分离到新分支中
【发布时间】:2020-09-20 03:26:04
【问题描述】:

假设有提交 A、B、C 和 D,并且它们都在 master 分支中,那么历史看起来是这样的。

A -> B -> C -> D -> HEAD.

C 和 D 带来了一些尚未完全测试的功能,您需要将它们分离到新的分支(您应该首先完成),测试它们等,然后合并回来。

那么我如何恢复 master 以提交 B 并将 C 和 D 分离到新分支中,使分支树看起来像这样?

A -> B -> master's HEAD.
      \-> C -> D -> new branch's HEAD.

【问题讨论】:

  • git checkout -b new-branch && git checkout - && git reset HEAD~2 --hard?
  • @jonrsharpe 以及如何在远程进行此更改?
  • 与您对遥控器进行任何其他更改的方式相同:推送它们。请注意,您必须强制 push 到 master,这......不理想。如果有其他人在该分支机构工作,则可能会引起问题。
  • 是的...不过还是非常感谢 :)

标签: git git-branch git-revert


【解决方案1】:

方法很多。您需要在 D 上创建一个新的分支标签,在 B 上创建一个主分支标签。 cmets 中有这种方式,或者这种方式稍微短一些:

git branch newbranch
git reset --hard @~2

或者这种方式会让你留在新的分支上,所以如果你在那里工作的话,工作树的流失会更少:

git checkout -b newbranch
git branch -f master @~2

注意:只有一个HEAD,它是父git commit 将使用的。为了清楚起见,分支有提示。 HEAD 通常附加到(即符号链接)您上次签出、提交或重置的任何内容,因此当您签出分支时,git 将 HEAD 设置为符号引用、别名分支提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2016-11-13
    • 2010-12-31
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多