代码之家  ›  专栏  ›  技术社区  ›  aberrant80

从旧版本的Git分支并回滚当前分支

git
  •  5
  • aberrant80  · 技术社区  · 14 年前

    我提交并将更改推送到一个名为“core”的分支。但后来我意识到我的改变不应该出现在那里——我应该在几次修订前创建一个新的分支,比如“核心实验”。

    为了解释,我有:

    A---B---C---D---E     "core"
    

    但现在我想改成

    A---B              "core"
        \
         C---D---E     "core-experimental"
    

    我的团队中还没有其他人撤回我的更改,所以我所做的任何回复都不会给任何人带来痛苦。

    这对Git有可能吗?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Cascabel    14 年前

    其他两个答案很好,但实际上您可以避免在工作树中执行任何操作:

    # create core-experimental using core as starting point
    git branch core-experimental core
    # move core
    git branch -f core <SHA1 of B>
    

    这样,即使您在工作树中进行了本地修改,并且在签出/重置期间不更新一堆时间戳,这将导致您必须重新生成(假设这是一个已编译的项目)。

        2
  •  6
  •   dahlbyk    14 年前
    git checkout core
    git branch core-experimental
    git reset --hard <SHA of B>
    git push -f <remote> core
    

    或者更确切地说。。。

    1. 在核心的头部创建实验分支
    2. 把core的头放回你想要的位置
        3
  •  1
  •   Adam Vandenberg    14 年前

    核心:

    git branch core-experimental
    git reset --hard <revision-B>
    

    git push -f