Я завжди думав 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. Дивіться мою відповідь щодо цього. 2 та 3 діаграми дуже корисні для бачення реальної різниці. Четверта та п'ята діаграми корисні для того, щоб перевірити, чи розумієте ви, що роблять ці команди, але насправді не допоможуть вам дістатися.
think-like-a-git.net
статті), щоб запобігти втраті даних.