Мне просто нужен простой список конфликтующих файлов.
Есть ли что-нибудь попроще, чем:
git ls-files -u | cut -f 2 | sort -u
или:
git ls-files -u | awk '{print $4}' | sort | uniq
Я думаю, я мог бы подготовить alias
для этого удобную вещь, однако мне было интересно, как это делают профессионалы. Я бы использовал его для написания циклов оболочки, например, для автоматического разрешения конфликтов и т. Д. Может быть, заменить этот цикл, подключившись к нему mergetool.cmd
?
git rebase --continue
перечислит файлы с конфликтами (если они есть)git rebase --continue
не перечислил конфликты, просто сказал мне их исправить (git version 2.21.0)Ответы:
источник
git config --global alias.conflicts "diff --name-only --diff-filter=U"
git status
?git conflicts
git diff --check
работает лучше.git diff --check
покажет список файлов, содержащих маркеры конфликта, включая номера строк .
Например:
источник: https://ardalis.com/detect-git-conflict-markers
источник
git diff --check
рассказывал мне и о других (менее серьезных) проблемах, таких как конечный пробел, такgit diff --check | grep -i conflict
что в случае OP это может бытьПытаюсь ответить на мой вопрос:
Нет, кажется, не существует более простого способа, чем тот, о котором идет речь, из коробки.
После того, как он набрал это слишком много раз, просто вставил более короткий файл в исполняемый файл с именем 'git-конфликты', сделанный доступным для git, теперь я могу просто:
git conflicts
получить список, который я хотел.Обновление: как предлагает Ричард, вы можете установить псевдоним git, как альтернативу исполняемому файлу
Преимущество использования исполняемого файла перед псевдонимом заключается в том, что вы можете поделиться этим сценарием с членами команды (в разделе репозитория bin dir).
источник
git config --global alias.conflicts "!git ls-files -u | cut -f 2 | sort -u"
(! Означает запустить эту команду оболочки, а не просто команду git).!
оболочка будет интерпретироваться вашей оболочкой:git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
Вот надежный способ:
источник
grep -H -r "<<<<<<< HEAD" .
c
приятно приводит к подсчету конфликтов тоже! Одно замечание: я бы использовал флаги,-Hrn
это также даст информацию о номере строки.[<=>]{7}
вместо этого. (Может понадобиться-E
флаг, чтобы это работало в grep.) Или,<{7}
если вы не беспокоитесь о свисающих маркерах слияния или хотите подсчитать конфликты. (Вы также можете использоватьgit grep
- тогда вам не нужен-r
флаг.)git status
отображает «оба измененных» рядом с файлами, которые имеют конфликты вместо «измененный» или «новый файл» и т. д.источник
источник
^U
чтобы все началось с UDD, AU, UD, UA, DU, AA, UU
DU
Это работает для меня:
git grep '<<<<<<< HEAD'
или
git grep '<<<<<<< HEAD' | less -N
источник
вы можете нажать
git ls-files -u
в командной строке, он перечисляет файлы с конфликтамиисточник
Если вы попытаетесь зафиксировать, и если будут конфликты, то git выдаст вам список неразрешенных в данный момент конфликтов ... но не в виде простого списка. Обычно это то, что вы хотите, когда работаете в интерактивном режиме, потому что список становится короче, когда вы исправляете конфликты.
источник
Возможно, это было добавлено в Git, но файлы, которые еще предстоит разрешить, перечислены в сообщении о состоянии (git status), например:
Обратите внимание, что это раздел Unmerged paths.
источник
Предполагая, что вы знаете, где находится ваш корневой каталог git, $ {GIT_ROOT}, вы можете сделать:
источник
Я всегда просто использовал
git status
.можно добавить
awk
в конце, чтобы получить только имена файловgit status -s | grep ^U | awk '{print $2}'
источник
Мои 2 цента здесь (даже когда есть много крутых / рабочих ответов)
Я создал этот псевдоним в моем
.gitconfig
который покажет мне только имена файлов с конфликтами ... не весь их путь :)
источник
Вот что я использую, чтобы список измененных файлов, подходящих для подстановки командной строки в bash
Для редактирования списка используйте
$(cmd)
подстановку.Не работает, если в именах файлов есть пробелы. Я попытался использовать
sed
для экранирования или кавычек пробелы, и выходной список выглядел правильно, но$()
подстановка все равно не работала так, как хотелось бы.источник
Мастер утилит git https://github.com/makelinux/git-wizard подсчитывает отдельно неразрешенные конфликтующие изменения (коллизии) и неотправленные файлы. Конфликты должны быть разрешены вручную или с помощью mergetool. Разрешенные неотправленные изменения могут быть добавлены и зафиксированы обычно с помощью git rebase --continue.
источник
небольшое изменение ответа Чарльза Бейли, который дает больше информации:
источник
Как подчеркивалось в других ответах, мы можем просто использовать команду git status, а затем искать файлы, перечисленные в разделе Unmerged paths:
источник