Qual é a maneira mais simples de obter uma lista de arquivos conflitantes?

Eu só preciso de uma lista simples de arquivos conflitantes.

Existe algo mais simples que:

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

ou

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

?

Eu acho que poderia criar um apelido para isso, no entanto queria saber como os profissionais fazem isso. Eu usá-lo para escrever laços de shell, por exemplo, para resolver automaticamente o conflito etc. Talvez replace esse loop, conectando em mergetool.cmd?

     git diff --name-only --diff-filter=U 

    Tentando responder minha pergunta:

    Não, parece não haver nenhuma maneira mais simples do que a da questão, fora da checkbox.

    Depois de digitar isso muitas vezes, apenas cole o mais curto em um arquivo executável chamado ‘git-conflicts’, acessível ao git, agora eu posso apenas: git conflicts para obter a lista que eu queria.

    Update: como Richard sugere, você pode configurar um alias git, como alternativa ao executável

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

    Uma vantagem de usar o executável sobre o alias é que você pode compartilhar esse script com membros da equipe (em uma parte bin dir do repository).

    Aqui está uma maneira infalível:

     grep -H -r "<<<<<<< HEAD" /path/to/project/dir 

    git status exibe “ambos modificados” ao lado de arquivos que possuem conflitos em vez de “modificados” ou “novos arquivos”, etc

     git status --short | grep "^UU " 

    você pode clicar em git ls-files -u na sua linha de comando, ele lista arquivos com conflitos

    Isso funciona para mim:

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

    ou

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

    git diff --check mostrará a lista de arquivos contendo marcadores de conflito, por exemplo:

     > 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 

    fonte: https://ardalis.com/detect-git-conflict-markers

    Talvez isso tenha sido adicionado ao Git, mas os arquivos que ainda não foram resolvidos estão listados na mensagem de status (status do git) assim:

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

    Note que esta é a seção de caminhos Unmerged.

    Se você tentar confirmar, e se houver conflitos, o git lhe dará a lista dos conflitos atualmente não resolvidos … mas não como uma lista simples. Geralmente, isso é o que você deseja quando trabalha interativamente porque a lista fica mais curta à medida que você corrige os conflitos.

    Eu sempre usei o git status .

    pode adicionar o awk no final para obter apenas os nomes dos arquivos

    git status -s | grep ^U | awk '{print $2}'

    Como destacado em outra (s) resposta (s), podemos simplesmente usar o comando git status e, em seguida, procurar por arquivos listados em Unmerged paths:

    Supondo que você saiba onde seu diretório raiz do git, $ {GIT_ROOT}, é, você pode fazer,

      cat ${GIT_ROOT}/.git/MERGE_MSG | sed '1,/Conflicts/d' 

    ligeira variação da resposta de Charles Bailey que dá mais informações:

     git diff --name-only --diff-filter=U | xargs git status