“git checkout -f”和“git reset –hard HEAD”有什么区别?
我需要恢复部署的本地更改。 (我曾经使用svn revert
在旧的skool SVN中svn revert
了这个。)
而即时通讯使用git reset --hard HEAD
。 (还git fetch
和git merge origin/$branch --no-ff
与上游分支同步。)
但是有些文章指出git checkout -f
用于恢复更改。
这个命令之间的关键区别是什么? build议哪种方式?
他们两个具有完全相同的效果。 我build议你select你更舒适的解决scheme。
但是,如果在这种特殊情况下效果是一样的,不同的价值观将会完全不同。 基本上(有更多,看到链接的主题)与重置您将当前分支和头移动到一个特定的提交,但与结帐,你只移动HEAD。 有关更多详情,请参阅下文
资源:
- 混帐重置
- git结帐
在同一主题上:
- git reset –hard HEAD和git checkout有区别吗?
- “git reset –hard hash”和“git checkout hash”有区别吗?
- 你能给我解释一下git reset in plain english吗?
没有代表评论其他答案呢,我只是想补充一点,我遇到的情况下,两个命令不具有相同的效果。 我进入了一个奇怪的状态,所以这绝对是一个边缘情况。 这是发生了什么事情:
我在一个分支,一切都干净。 我检查了主git checkout master
并从git status
发现有变化的现有文件没有阶段提交(是的,我只是检查了代码)。 我试图回到一个干净的状态,存储声称已经完成,但git status
仍然没有改变。 也试过git reset --hard HEAD
。 它也报告成功完成,但状态也不例外。 我无法放弃这些奇怪的变化。
但是, git checkout -f
解决了这个问题。 我能够摆脱这种奇怪的状态。 所以,至less在某些方面,两者是不一样的。