В чем разница между всеми этими командами git? - PullRequest
0 голосов
/ 25 октября 2019

В чем разница между всеми этими командами git?

git reset --hard HEAD
git reset --hard HEAD~1
git reset --hard HEAD^
git reset --hard ORIG_HEAD

1 Ответ

2 голосов
/ 25 октября 2019

git reset --hard HEAD просто возвращает все ваши изменения из вашего рабочего дерева (без резервного копирования)

git reset --hard HEAD~1 возвращает вас к родителю текущей ревизии (без резервного копирования, без сохранения изменений)

git reset --hard HEAD^ То же самое, что и предыдущий. Синтаксически разные, это немного разные. ^ используется, чтобы указать родителям на коммит слияния, тогда как ~ это возврат родителей в ревизиях с первым родителем. Таким образом, HEAD~ = HEAD^, но HEAD~2 означает 2 ревизии назад в истории от текущей ревизии, тогда как HEAD^2 получает второго родителя текущей ревизии (при условии, что текущая ревизия является коммитом слияния)

git reset --hard ORIG_HEAD Возвращает вас (без резервной копии) к ревизии, которой вы были до вашей последней операции извлечения / слияния / фиксации / возврата / cherry-pick (нет необходимости в родительских и дочерних отношениях с текущей ревизией). Если бы вы были на branchA, а затем переключились на branchB, то ORIG_HEAD было бы branchA ... на самом деле не сама ветвь, а ревизия, где она была в тот момент. Он вышел из употребления, так как синтаксис HEAD@{1} намного мощнее, потому что вы можете сказать другие вещи, такие как , где я был 3 ревизии назад с HEAD@{3}. Итак, если бы вы были на branchA, переключились на branchB, то branchC, тогда HEAD@{1} было бы branchB, HEAD@{2} было бы ответвлением A (опять же, не ветвями, а ревизиями, на которые они указывали)в этот момент. Если ветвь перемещается, это не изменит ревизию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...