Как заставить git вставлять SHA в конфликтующий файл вместо коммитов?
Когда я перезагружаюсь и возникает конфликт, конфликтующий файл выглядит так:
<<<<<<< c50c817dad7008a3760241084de2b83fd4f84288
it was on master 456
=======
it was on master 123
>>>>>>> branch - set up README conflict
Иногда другие люди не делают таких замечательных коммитов, поэтому я могу получить что-то вроде этого:
<<<<<<< c50c817dad7008a3760241084de2b83fd4f84288
it was on master 456
=======
it was on master 123
>>>>>>> fixed stuff
Проблема в том, что если существует более одного "фиксированного" коммита, у меня будут проблемы с поиском точного коммита. Есть ли способ сделать так, чтобы git всегда использовал SHA-хеш вместо сообщений коммитов?
1 ответ
К сожалению нет.
Ну, с другой стороны: да, вроде как: используйте отдельный HEAD и вишню выбирают вручную, по ID, чтобы у git не было имени, которое он мог бы заменить. Тем не менее, это побеждает большую часть цели перебазирования (перебазирование автоматизирует сбор вишни, а также обновление имени ветви в конце).
Вы не должны делать это по двум причинам. То, что вы не можете контролировать, это то, что люди не должны использовать дерьмовые сообщения о коммите.:-) То, что вы можете использовать, это то, что когда rebase останавливается с конфликтом, HEAD
а также CHERRY_PICK_HEAD
идентифицировать SHA-1 двух конфликтующих коммитов. Увидеть git cherry-pick
документация для деталей.
(Я также рекомендую настройку merge.conflictstyle
в diff3
, который позволяет увидеть базовую версию. Это не так необходимо для rebase/cherry-pick, как для полных слияний, но мне это нравится.)