2015-06-19 237 views
2

我的存储库有2个分支,主人mybranch。我已经多次致力于mybranch,意识到我的许多变化并不是我想要的。如何将旧版本合并到git中分支的头部?

因此,我做了一个旧的git checkout使用

git checkout 02c383 

我想这个老承诺是mybranchHEAD对* mybranch *提交。我该怎么做呢?

当我看着我的树枝,我看到:

$ git branch 
*(detached from numbershere) 
mybranch 
master 

回答

1
git checkout mybranch 
git reset --hard 02c383 

在此之后,mybranch将被移动到指向02c383

+1

好的,但后来我添加了一个文件,然后做了一个git添加,提交。当我做一个git push origin mybranch时,我得到了“更新被拒绝,因为当前分支的提示位于其远程对象的后面” – Rolando

+0

啊,好的,您已经推过'mybranch'。有没有其他人在回购工作,还是只有你?如果它只是你(你必须确定这一点),那么做一个'git push -f'。否则,我会以另一种方式编辑我的答案。 –

1

您可以将当前分支重置到不同与

git reset --hard <ref> 

在你的榜样承诺,这相当于

git reset --hard 02c383 

当心

  • 你应该避免做这样的事情(特别是mybranch已被其他人使用)
  • 回到以前的提交mybranch之前指出(现在dangling commit变得有点棘手,如果你不记得那个SHA。
+0

在重置后立即进行更改后,我无法将gib推送原点mybranch。我做了:git reset,添加了一个文件,git commit,git push origin mybranch。 “[拒绝] mybranch - > mybranch(非快进)” – Rolando

+0

当然,这是一个很大的红色警告标志。你必须使用'git push --force' - 警告你正在做危险的事情(重写该分支的历史记录)。 – StephenKing

相关问题