Я всегда думал о git reset и git checkout как об одном и том же, в том смысле, что оба возвращают проект к определенной фиксации. Однако я чувствую, что они не могут быть точно такими же, поскольку это было бы излишним. Какова реальная разница между двумя? Я немного сбит с толку, так как у svn есть только svn co чтобы отменить коммит.
ADDED
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


