Какой самый простой способ перечислить конфликтующие файлы в Git? - PullRequest
602 голосов
/ 18 июня 2010

Мне просто нужен простой список конфликтующих файлов.

Есть ли что-нибудь попроще, чем:

git ls-files -u  | cut -f 2 | sort -u

или

git ls-files -u  | awk '{print $4}' | sort | uniq

Полагаю, я мог бы установить для этого удобную alias, но было интересно, как это делают профессионалы. Я бы использовал его для написания циклов оболочки, например автоматическое разрешение конфликта и т. д. Может быть, заменить этот цикл, подключив к mergetool.cmd?

Ответы [ 16 ]

1054 голосов
/ 04 июня 2012
git diff --name-only --diff-filter=U
34 голосов
/ 27 июня 2010

Пытаюсь ответить на мой вопрос:

Нет, кажется, не существует более простого способа, чем тот, о котором идет речь, из коробки.

После ввода этого слишком много раз, просто вставив более короткий файл в исполняемый файл с именем 'git-конфликты', сделанный доступным для git, теперь я могу просто: git conflicts чтобы получить список, который я хотел.

Обновление: как предлагает Ричард, вы можете установить псевдоним git в качестве альтернативы исполняемому файлу

git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'

Преимущество использования исполняемого файла перед псевдонимом заключается в том, что вы можете поделиться этим сценарием с членами команды (в разделе репозитория bin dir).

26 голосов
/ 20 марта 2018

git diff --check

покажет список файлов, содержащих маркеры конфликта , включая номера строк .

Например:

> git diff --check
index-localhost.html:85: leftover conflict marker
index-localhost.html:87: leftover conflict marker
index-localhost.html:89: leftover conflict marker
index.html:85: leftover conflict marker
index.html:87: leftover conflict marker
index.html:89: leftover conflict marker

источник: https://ardalis.com/detect-git-conflict-markers

21 голосов
/ 16 декабря 2013

Вот надежный способ:

grep -H -r "<<<<<<< HEAD" /path/to/project/dir
21 голосов
/ 19 октября 2011

git status отображает «оба измененных» рядом с файлами, имеющими конфликты, вместо «измененный» или «новый файл» и т. Д.

17 голосов
/ 10 февраля 2012
git status --short | grep "^UU "
11 голосов
/ 27 октября 2016

Это работает для меня:

git grep '<<<<<<< HEAD'

или

git grep '<<<<<<< HEAD' | less -N

10 голосов
/ 11 августа 2015

вы можете нажать git ls-files -u в командной строке, где перечислены файлы с конфликтами

3 голосов
/ 21 апреля 2015

Возможно, это было добавлено в Git, но файлы, которые еще предстоит разрешить, перечислены в сообщении о состоянии (git status), например:

#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      syssw/target/libs/makefile
#

Обратите внимание, что это раздел Unmerged paths.

2 голосов
/ 04 августа 2011

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

...