Можно ли выяснить, какие файлы конфликтовали в коммите слияния после факта? Или способ заставить git перечислить файлы в сообщении фиксации? - PullRequest
1 голос
/ 08 февраля 2020

Я хотел бы знать, какие файлы git не смогли автоматически объединиться, когда произошел конфликт объединения. Я нашел этот ответ: Как перечислить конфликтующие файлы (файлы с изменениями в обоих родителях) в git коммите слияния?

Но только что протестировал git show --name-status, и он не в моем случае файлы, которые, как я знаю, конфликтовали, не отображались в списке ...

Кроме того, мне интересно, возможно ли принудительно включить эти файлы в коммит git сообщение при выполнении коммита слияния как-нибудь? Или хотя бы изменить поведение git по умолчанию, чтобы файлы не были закомментированы по умолчанию? (чтобы сделать это изменение для всех в моей команде, очевидно, использующих репозиторий)

1 Ответ

3 голосов
/ 08 февраля 2020

Да, но это включает Git крючков, которые мешают (см. Ниже). В редких случаях вам нужна такая информация, вы можете вместо этого воссоздать конфликт.

Допустим, вы смотрите на этот репозиторий.

A - B - F - G -- M - N - O [master]
     \         /
      C - D - E

И вы хотите знать о конфликтах в M. Оформить заказ G и объединить E.

git checkout G
git merge E

Будут воспроизведены любые конфликты.


Я хотел бы знать, какие файлы git не смогли автоматически объединиться, когда произошел конфликт слияния.

Git не запишет, какие файлы были конфликтованы в коммите слияния. Эта информация эфемерна.

В качестве альтернативы, мне интересно, можно ли принудительно включить эти файлы в сообщение коммита git при выполнении коммита слияния? Или хотя бы изменить поведение по умолчанию git, чтобы файлы не были закомментированы по умолчанию?

Да. Однако ...

(чтобы сделать это изменение для всех в моей команде, использующих хранилище, очевидно)

Не автоматически.

Вы можете использовать hook-prepare-commit-msg для редактирования сообщения фиксации. Первый аргумент - это исходный файл, а второй - источник (вы ищете merge). Вы можете написать хук, который либо раскомментирует существующие конфликтующие строки, либо напишите свой собственный файл со списком конфликтующих файлов .

Однако хуки Git не распространяются вместе с репозиторием. Все в вашей команде должны будут установить их и поддерживать их в актуальном состоянии.

Сообщения коммита не могут быть изменены на стороне сервера (ie. После нажатия), потому что сообщение фиксации является частью фиксации. Изменение сообщения изменит идентификатор фиксации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...