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

时间:2012-03-21 19:45:24

标签: git

我弄乱了项目的本地分支,我想将本地副本还原为远程状态。我如何完成那个简单的目标?

5 个答案:

答案 0 :(得分:8)

如果您不怕丢失任何本地历史记录,可以切换到另一个分支,然后删除本地分支,然后检查远程版本。例如,如果要还原名为“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指针可以根据合并的类型而改变。

编辑:另一种做同样事情的方法就是输入:

git reset --hard origin/test_feature

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

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

答案 1 :(得分:2)

您可以使用

重置

git reset --hard HEAD

如果你这样做,你将失去所有的改变。 This might be helpful

答案 2 :(得分:2)

其他答案都没有实际回答OP提出的问题。以下是您将[本地]副本还原到远程状态":

的方法
# get the latest from remote repo
git fetch origin
# set current branch to exact state of remote branch
git reset --hard origin/my_branch_name

答案 3 :(得分:0)

有一个简单的单线可以做你想要的,但通常当我觉得我“搞乱了一个分支”而不是遥控器上的东西时,我使用交互式变基,这让我有了更多的控制权。这样我可以根据需要编辑提交,或者如果我不想提交则删除行。见这里:http://book.git-scm.com/4_interactive_rebasing.html

答案 4 :(得分:0)

如果您想恢复为远程最新版本

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