Я всегда думал о 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