我搞乱了本地一个项目的分支,现在我想将本地副本还原到远程状态。如何简单地实现这个目标?
我搞乱了本地一个项目的分支,现在我想将本地副本还原到远程状态。如何简单地实现这个目标?
$ git checkout master
$ git branch -D test_feature # see note about -D below
$ git checkout test_feature # should track origin/test_feature
git reset --hard origin/test_feature
这将重置您当前所在的分支为远程(在本例中为origin)分支test_feature
的状态。
注意:--hard
会重置所有本地更改。如果您想保留任何本地更改,请确保使用git stash
或类似方法。
@hvgotcodes在他的示例中有一个变体(他的目标是HEAD提交)
forked_repo/feature
,那么重置语法需要包括 remotes/
以避免歧义。git reset --hard remotes/forked_repo/feature
- edA-qa mort-ora-yorigin
是指你的远程名称。大多数人只需克隆即可成为 origin,但如果你正在 fork,则可能有多个远程,因此这对于 fork 的人来说非常重要。 - zedd45git fetch --all
git reset --hard origin/master
git rev-list -n 1 --before="2009-07-27 13:37" origin/master
git checkout XXXX
有一些简单的一行代码可以做到你所要求的,但通常当我感觉我已经“搞砸了一个分支”而不是远程上的内容时,我会使用交互式变基,这样我就可以编辑提交记录(如果需要),或者删除某些行,如果我只是不想提交。请参见此处:http://book.git-scm.com/4_interactive_rebasing.html