Как заставить 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, как для полных слияний, но мне это нравится.)

Другие вопросы по тегам