Есть ли в Mercurial и Git истории каких наборов изменений вы обновили? - PullRequest
0 голосов
/ 09 июня 2018

Хранит ли mercurial и git запись о том, какие наборы изменений были у вас до недавних звонков на update/checkout?Эта история где-то хранится?

Конкретный вариант использования - если вы pull/fetch начинаете новую работу над проектом и сталкиваетесь с проблемой некоторых новых изменений.Такая история позволила бы вам вернуться туда, где вы были, чтобы отменить изменения без проб и ошибок.

1 Ответ

0 голосов
/ 10 июня 2018

В распределенном виде Mercurial не хранит информацию о том, какие ревизии вы извлекли ранее - но в Mercurial 3.9 имеется экспериментальное расширение, называемое Journal , которое, если оно включено, делает.Также обратите внимание, что hg pull не обновляется до какой-либо новой ссылки, если вы не укажете это, т. Е. Это намного больше похоже на git fetch, чем на git pull. 1

Gitсохраняет эту информацию в reflog для специального ссылочного имени HEAD. 2 Это зависит от того, включены ли reflogs enabled ;Вы можете отключить их.По умолчанию для нормального рабочего репозитория они включены.

После git merge или git rebase (т. Е. Во второй половине git pull) HEAD@{1} извлекает первую запись в reflog,Предполагая, что вы выполнили успешное слияние или перебазирование (поэтому предыдущее значение HEAD - это старая ссылка), вы получите предыдущее значение HEAD.Если вы сделали ребаз, и он потерпел неудачу и нуждался в человеческой помощи, предыдущий HEAD снова возвращается в журнал, но ORIG_HEAD будет указывать на предыдущий коммит.Reflog для текущей ветки также будет полезен.


1 К счастью, в мире мало таких вещей, как git pull, потому что git pull плохоразработан инструмент удобства, которые часто более неудобно, чем удобно.

1035 * 2 ли HEAD действительно ссылка имя спорно.Для целей reflog, это.
...