Уникальная ссылка на коммит в Git при изменении истории - PullRequest
1 голос
/ 21 ноября 2010

У меня проблема, мне нравится ссылаться на другие коммиты из сообщений коммитов, которые я делаю с идентификатором SHA, но я также люблю время от времени менять предыдущий коммит.Когда я изменяю коммит, меняется идентификатор SHA, есть идеи?Есть ли другой способ уникальной ссылки на коммит?спасибо

Ответы [ 2 ]

2 голосов
/ 21 ноября 2010

Нет автоматического способа решить эту проблему.То, что вы, вероятно, захотите сделать, это завершить фиксацию в какой-то момент (например, при слиянии с мастером и протолкнуть) и в этот момент подтвердить, что все SHA1 указывают на правильное место.

Один из способов проверить себя -grep коммитить сообщения для SHA1 (например, git log --grep='[0-9a-f]{7}) и проверять, представляет ли данный SHA1 коммит, который является предком коммита, чье сообщение упоминает о нем.Вы также можете запустить эту проверку с крючка.Какой именно крючок зависит от вашего рабочего процесса;Я мог видеть возможности до или после слияния.Для проверки по одному коммиту (например, до фиксации) на самом деле вам не придется просматривать журналы, только текущее сообщение о коммите.Для слияния вы хотите записать в журнал логи коммитов.

1 голос
/ 21 ноября 2010

Я думаю, что единственный верный способ - использовать теги.Но создавать тэг всякий раз, когда вы хотите сослаться на коммит, довольно трудоемко.

Может быть, использование относительных ссылок (например, ~5) может сработать, но это может привести к поломке, если вы удалили, разбили или раздавили коммиты.

Еще одна возможность - ссылаться на SHA1 дерева, а не на сам коммит.Таким образом, если вы изменили коммиты, но не деревья за ними, ссылка все равно будет работать.Проблема в том, что инструменты не поддерживают это, я думаю.

...