Почему `git ls-files --modified` показывает файлы несколько раз в конфликте слияния? - PullRequest
0 голосов
/ 28 мая 2018

Когда у меня конфликт слияния и введите git ls-files --modified Я ожидаю, что он покажет список файлов, которые были изменены в текущем конфликте слияния, и покажет файл только один раз.Но иногда он показывает один и тот же файл в списке несколько раз.Например, когда я делаю следующее:

git init
git commit --allow-empty -m 'init'
echo hello world > file
git add -A
git commit -m "hello world"
git checkout HEAD^
git checkout -b other
echo hello other > file
git add -A
git commit -m "hello other"
git merge master 
# Generates conflict
git ls-files --modified

, он показывает

file
file

, когда состояние git отображается только file один раз.

В этом случае он дважды перечислял один и тот же файл, но у меня были случаи, когда он указывал один и тот же файл 3 раза.

Это ожидаемое поведение?

1 Ответ

0 голосов
/ 28 мая 2018

git ls-files - это команда низкого уровня (в мире Git это называется «команда подключения»), которая показывает внутреннее состояние репозитория Git.Точнее, он перечисляет записи в индексе.

Когда слияние заканчивается конфликтами, у каждого конфликтующего файла есть 3 записи в индексе: одна для общего предка, для вашей версии и одна для версии, являющейсяслиты.Это то, что позволяет git diff показывать вам комбинированные различия, когда у вас есть неразрешенные конфликты.

Как следствие двух приведенных выше утверждений, логично, что git ls-files показывает несколько записей для одного и того же файла вслучай конфликтов.

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