Solo necesito una lista simple de archivos en conflicto .
¿Hay algo más simple que:
git ls-files -u | cut -f 2 | sort -u
o:
git ls-files -u | awk '{print $4}' | sort | uniq
Supongo que podría configurar un útil aliaspara eso, sin embargo, me preguntaba cómo lo hacen los profesionales. Lo usaría para escribir bucles de shell, por ejemplo, para resolver automáticamente conflictos, etc. ¿Tal vez reemplazar ese bucle enchufándolo mergetool.cmd?
git
git-merge
git-merge-conflict
inger
fuente
fuente

git rebase --continueenumerará los archivos con conflictos (si los hay)git rebase --continueno enumeró los conflictos, solo me dijo que los arreglara (git versión 2.21.0)Respuestas:
fuente
git config --global alias.conflicts "diff --name-only --diff-filter=U"git status?git conflictsgit diff --checkFunciona mejorgit diff --checkmostrará la lista de archivos que contienen marcadores de conflicto, incluidos los números de línea .
Por ejemplo:
fuente: https://ardalis.com/detect-git-conflict-markers
fuente
git diff --checkcontándome sobre otros problemas (menos serios), como el espacio en blanco, por lo quegit diff --check | grep -i conflictpodría ser el caso de OPTratando de responder mi pregunta:
No, no parece haber una forma más simple que la de la pregunta, fuera de la caja.
Después de escribir eso muchas veces, solo pegué el más corto en un archivo ejecutable llamado 'git-conflictos', que se hizo accesible a git, ahora puedo simplemente:
git conflictsobtener la lista que quería.Actualización: como sugiere Richard, puede configurar un alias git, como alternativa al ejecutable
Una ventaja de usar el ejecutable sobre el alias es que puede compartir esa secuencia de comandos con los miembros del equipo (en una parte bin dir del repositorio).
fuente
git config --global alias.conflicts "!git ls-files -u | cut -f 2 | sort -u"(el! Significa ejecutar este comando de shell, en lugar de solo un comando git).!será interpretado por su shell:git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'Aquí hay una manera infalible:
fuente
grep -H -r "<<<<<<< HEAD" .cresultado agradable también es la cuenta de conflictos! Una nota es que usaría indicadores,-Hrnesto también proporcionará información sobre el número de línea.[<=>]{7}lugar de esto. (Es posible que necesite una-Ebandera para que funcione en grep.) O,<{7}si no le preocupa colgar marcadores de fusión o si desea contar los conflictos. (También puede usargit grep, entonces no necesita la-rbandera.)git statusmuestra "ambos modificados" junto a los archivos que tienen conflictos en lugar de "modificado" o "nuevo archivo", etc.fuente
fuente
^Upara que todo comience con UDD, AU, UD, UA, DU, AA, UUDUEsto funciona para mi:
git grep '<<<<<<< HEAD'o
git grep '<<<<<<< HEAD' | less -Nfuente
puede presionar
git ls-files -uen su línea de comando, enumera archivos con conflictosfuente
Si intenta comprometerse, y si hay conflictos, git le dará la lista de los conflictos no resueltos actualmente ... pero no como una lista simple. Esto suele ser lo que desea cuando trabaja de forma interactiva porque la lista se acorta a medida que soluciona los conflictos.
fuente
Tal vez esto se haya agregado a Git, pero los archivos que aún no se han resuelto se enumeran en el mensaje de estado (estado de git) como este:
Tenga en cuenta que esta es la sección de rutas no fusionadas.
fuente
Suponiendo que sabe dónde está su directorio raíz de git, $ {GIT_ROOT}, puede hacer,
fuente
Siempre he usado
git status.puede agregar
awkal final para obtener solo los nombres de archivogit status -s | grep ^U | awk '{print $2}'fuente
Mis 2 centavos aquí (incluso cuando hay muchas respuestas interesantes / de trabajo)
Creé este alias en mi
.gitconfigque me mostrará solo los nombres de los archivos con conflictos ... no toda su ruta :)
fuente
Esto es lo que uso para una lista de archivos modificados adecuados para la sustitución de línea de comandos en bash
Para editar la lista use la
$(cmd)sustitución.No funciona si los nombres de los archivos tienen espacios. Traté de usar
sedpara escapar o citar los espacios y la lista de resultados se veía bien, pero la$()sustitución todavía no se comportó como se deseaba.fuente
El asistente de utilidad git https://github.com/makelinux/git-wizard cuenta por separado los cambios conflictivos no resueltos (colisiones) y los archivos no fusionados. Los conflictos deben resolverse manualmente o con mergetool. Los cambios no fusionados resueltos pueden agregarse y confirmarse generalmente con git rebase --continuar.
fuente
ligera variación de la respuesta de Charles Bailey que brinda más información:
fuente
Como se resalta en otras respuestas, simplemente podemos usar el estado del comando git y luego buscar los archivos enumerados en Rutas no fusionadas:
fuente