Какой самый простой способ получить список конфликтующих файлов?
мне просто нужен простой список конфликтующих файлов.
есть ли что-нибудь проще, чем:
git ls-files -u | cut -f 2 | sort -u
или
git ls-files -u | awk '{print }' | sort | uniq
?
Я думаю, что я мог бы настроить удобный псевдоним для этого, однако было интересно, как профессионалы это делают. Я бы использовал его для записи циклов оболочки, например, для автоматического разрешения конфликта и т. д.. Может быть, заменить этот цикл, подключившись к mergetool.ЦМД?
14 ответов:
пытаясь ответить на мой вопрос:
нет, кажется, нет более простого способа, чем тот, что в вопросе, из коробки.
после ввода этого слишком много раз, просто вставил более короткий в исполняемый файл с именем "git-conflicts", доступный для git, теперь я могу просто:
git conflicts
чтобы получить список, который я хотел.Update: как предлагает Ричард, вы можете настроить псевдоним git, как альтернативу исполняемому
git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
преимущество использование исполняемого файла поверх псевдонима заключается в том, что вы можете поделиться этим скриптом с членами команды (в части bin dir РЕПО).
git status
отображает "оба измененных" рядом с файлами, которые имеют конфликты вместо " измененный "или" новый файл " и т. д.
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
возможно, это было добавлено в Git, но файлы, которые еще не разрешены, перечислены в сообщении о состоянии (git status) следующим образом:
# # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: syssw/target/libs/makefile #
обратите внимание, что это раздел несвязанных путей.
Если вы попытаетесь совершить, и если есть конфликты, то git даст вам список в настоящее время неразрешенных конфликтов... но не как простой список. Это обычно то, что вы хотите при работе в интерактивном режиме, потому что список становится короче, как вы исправить конфликты.
Я всегда просто использовать
git status
.добавить
awk
в конце, чтобы получить только имена файлов
git status -s | grep ^U | awk '{print }'
Как выделено в других ответах, мы можем просто использовать команду git status а затем искать файлы, перечисленные в разделе несвязанные пути: