我一直认为git reset
和git checkout
相同,因为两者都将项目带回特定的提交。但是,我觉得它们不可能完全相同,因为那将是多余的。两者之间的实际区别是什么?我有点困惑,因为 svn 只svn co
需要恢复提交。
添加
VonC 和 Charles很好地解释了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