Git:如何将我的本地分支恢复到远程分支状态



我把项目的本地分支搞砸了,我想把本地副本恢复到远程状态。我如何实现这个简单的目标?

如果您不怕丢失任何本地历史记录,您可以切换到另一个分支,然后删除您的本地分支,然后检查远程版本。例如,如果你想恢复一个名为"test_feature"的分支,你可以这样做:

$ git checkout master
$ git branch -D test_feature # see note about -D below
$ git checkout test_feature  # should track origin/test_feature

注意:-D将强制删除分支,并将取消有关未合并更改的警告。

如果您已经合并了一个不打算合并的分支,这将非常有用,因为HEAD指针可能会根据合并的类型而更改。

EDIT:做同样事情的另一种方法是简单地键入:

git reset --hard origin/test_feature

这将把您当前所在的分支重置为远程(本例中为原点)分支test_feature的状态。

@hvgotcodes在他的例子中有一个变体(他针对的是HEAD提交)

您可以使用重置

git reset --hard HEAD

如果你这样做,你将失去所有更改。这可能会有所帮助。

如果您想恢复到远程最后版本

git fetch --all
git reset --hard origin/master

如果您想恢复到特定的版本

首先,获取标识某个日期提交的字符串,执行:

git rev-list -n 1 --before="2009-07-27 13:37" origin/master

它打印提交标识符,获取字符串(例如XXXX)并执行:

git checkout XXXX

有一些简单的一句话可以满足您的要求,但通常当我觉得自己"搞砸了一个分支"而不是远程操作时,我会使用交互式重定基线,这会让我有更多的控制权。这样,如果需要的话,我可以编辑提交,或者如果我不想提交,就可以删除行。请参见此处:http://book.git-scm.com/4_interactive_rebasing.html

最新更新