Git:放弃分支本地分支上的所有更改
我有一个跟踪远程分支的本地主题分支。为了讨论的方便,说犯历史是这样的:Git:放弃分支本地分支上的所有更改
A--B--C--O1--O2--O3 (origin/phobos)
\
L1--L2--L3 (phobos)
说完看着相对犯下的历史,我现在要放弃所有更改到本地phobos
分支,让它重新成为一个直接的origin/phobos
副本,让当地的历史是这样的:
A--B--C--O1--O2--O3 (phobos origin/phobos)
我真的不希望当地的更改phobos
分支,我真的不希望有任何合并于出身库露面之后。 (所以,只是合并不是我想到的。)
这似乎应该很容易,但我的谷歌福已经失败了我。我该怎么做呢?
删除分支,然后重新创建它:
$ git branch -D phobos
$ git checkout --track -b phobos origin/phobos
git checkout phobos
git reset --hard origin/phobos
这告诉GIT中的phobos
头复位到相同的承诺作为origin/phobos
,并更新工作树相匹配。
IMO应该是被接受的答案;它会发出“重置”命令来移植分支指针,而不是通过移除/重新创建手术。 – vdboor 2010-05-03 15:56:01
实际上,我先试了这个,然后抛出了大量由本地拷贝造成的错误几乎无法使用。删除/重新创建可能不够优雅,但我不必提出任何后续问题。 – 2010-08-05 22:03:27
@Electrons_Ahoy:嗯,这绝对不正常。如果您的回购协议处于良好工作状态,则通常应该进行无故障操作。 – 2010-08-06 01:44:08
太棒了。这工作完美。 – 2010-03-25 19:26:57
这种方法与重新设置分支的头相关的一个问题是,删除分支会吹走分支的reflog。另一方面,重置分支不仅保留了reflog,而且实际上将重置记录在reflog中。如果需要,这可以使操作在以后轻松恢复。 – 2011-03-30 22:36:19
@Electrons_Ahoy建议您将接受的答案更改为Dan的答案(这样像Google这样的人如何做到这一点可能会选择更安全的方法)。 – 2014-01-20 11:11:06