从某种意义上说,我git reset
和我一直都git checkout
一样,都将项目带回到特定的提交。但是,我觉得它们不可能完全相同,因为那将是多余的。两者之间的实际区别是什么?我有点困惑,因为svn只svn co
需要还原提交。
添加
VonC和查尔斯解释之间的差异git reset
和git checkout
真的很好。我目前的理解是git reset
将所有更改都还原为特定的提交,而git checkout
或多或少准备分支。我发现以下两个图对于理解这一点非常有用:
加3
在http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html中,结帐和重置可以模拟变基。
git checkout bar
git reset --hard newbar
git branch -d newbar
-- files
变体,可能还可以;我不确定。)该图使其看起来主要区别在于它们是影响索引还是WD。看到我对此的回答。第二和第三张图对于了解实际差异非常有帮助。第4和第5个图对于检查您是否了解这些命令的功能很有用,但并不能真正帮助您到达那里。
think-like-a-git.net
文章中提供)来防止数据丢失。