2016-03-29 2 views
2

Когда я перебазироваться и возникает конфликт, конфликтующий файл выглядит следующим образом:Как сделать 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-хеши вместо сообщений?

ответ

0

К сожалению, нет.

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

Для этого необходимо выполнить следующие действия. Тот, который вы не можете контролировать, заключается в том, что люди не должны использовать сообщения об ошибке. :-) Тот, которого вы может использовать, заключается в том, что при перестановке битков с конфликтом HEAD и CHERRY_PICK_HEAD идентифицируют SHA-1 двух конфликтующих коммитов. См. the git cherry-pick documentation.

(я также рекомендую установить merge.conflictstyle в diff3, который позволяет увидеть базовую версию. Это не так необходимо для перебазирования/вишневого выбор, как для полного слияния, но мне это нравится.)