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

时间:2010-11-04 04:18:34

标签: git

我不太了解Git,对于我们的一个存储库,我犯了一个错误。

我已将更改提交并推送到名为“core”的分支。但后来我意识到我的改变不应该存在 - 我应该在几个版本之前创建一个新的分支,比如说,“核心实验”。

要解释一下,我有:

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

但现在我想把它改成

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

我的团队中没有其他人撤销我的更改,因此我所做的任何修改都不会给任何人带来痛苦。

这对Git来说可能吗?

3 个答案:

答案 0 :(得分:9)

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

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

这样,即使您在工作树中进行了本地修改,并且在结帐/重置期间没有更新一堆时间戳而导致您必须重建(假设这是一个已编译的项目),您也可以这样做。

答案 1 :(得分:6)

git checkout core
git branch core-experimental
git reset --hard <SHA of B>
git push -f <remote> core

或更具描述性......

  1. 结帐核心
  2. 在核心的HEAD
  3. 创建实验分支
  4. 将核心的HEAD重置回您想要的位置
  5. 强制推送更新核心

答案 2 :(得分:1)

核心:

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

然后:

git push -f