我弄乱了项目的本地分支,我想将本地副本还原为远程状态。我如何完成那个简单的目标?
答案 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)
答案 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