我需要恢复部署的本地更改。(在以前的skool SVN时代,我曾经使用过svn revert
。)
我使用git reset --hard HEAD
来实现这一点。(还包括用于与上游分支同步的git fetch
和git merge origin/$branch --no-ff
。)
但一些文章指出git checkout -f
可以恢复更改。
此命令之间的主要区别是什么。推荐哪种方式?
发布于 2014-05-06 02:16:33
我还没有对其他答案发表评论的代表,我只是想补充说,我遇到了两个命令没有相同效果的情况。我进入了一种奇怪的状态,所以这绝对是一种边缘情况。下面是发生的情况:
我在树枝上,一切都很干净。我签出了主git checkout master
,并从git status
中发现了对现有文件的更改,这些更改不是暂存于提交阶段的(是的,在我刚刚签出的代码上)。我尝试隐藏以恢复到干净的状态,隐藏声称已完成,但git status
仍未更改。我也尝试过git reset --hard HEAD
。它也报告成功完成,但状态没有什么不同。我不能放弃这些奇怪的改变。
然而,git checkout -f
解决了这个问题。我得以摆脱这种奇怪的状态。因此,至少在某些方面,这两者是不同的。
https://stackoverflow.com/questions/6201877
复制相似问题