J'ai juste besoin d'une liste simple de fichiers en conflit .
Y a-t-il quelque chose de plus simple que:
git ls-files -u | cut -f 2 | sort -u
ou:
git ls-files -u | awk '{print $4}' | sort | uniq
Je suppose que je pourrais mettre en place un outil pratique alias
pour cela, mais je me demandais comment les pros le faisaient. Je l'utiliserais pour écrire des boucles shell, par exemple pour résoudre automatiquement les conflits, etc. Peut-être remplacer cette boucle en se connectant mergetool.cmd
?
git
git-merge
git-merge-conflict
en colère
la source
la source
git rebase --continue
listera les fichiers avec conflits (s'il y en a)git rebase --continue
n'a pas répertorié les conflits, m'a juste dit de les corriger (git version 2.21.0)Réponses:
la source
git config --global alias.conflicts "diff --name-only --diff-filter=U"
git status
?git conflicts
git diff --check
fonctionne mieux.git diff --check
affichera la liste des fichiers contenant des marqueurs de conflit, y compris les numéros de ligne .
Par exemple:
source: https://ardalis.com/detect-git-conflict-markers
la source
git diff --check
d'autres problèmes (moins graves), comme les espaces vides, donc ungit diff --check | grep -i conflict
pourrait être en règle pour le cas d'OPEssayer de répondre à ma question:
Non, il ne semble pas y avoir de moyen plus simple que celui de la question, hors boîte.
Après avoir tapé cela trop souvent, je viens de coller le plus court dans un fichier exécutable nommé 'git-conflits', rendu accessible à git, maintenant je peux juste:
git conflicts
obtenir la liste que je voulais.Mise à jour: comme Richard le suggère, vous pouvez configurer un alias git, comme alternative à l'exécutable
Un avantage de l'utilisation de l'exécutable sur l'alias est que vous pouvez partager ce script avec les membres de l'équipe (dans une partie bin dir du repo).
la source
git config --global alias.conflicts "!git ls-files -u | cut -f 2 | sort -u"
(le! Signifie exécuter cette commande shell, plutôt qu'une simple commande git).!
sera interprété par votre shell:git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
Voici une façon infaillible:
la source
grep -H -r "<<<<<<< HEAD" .
c
résultat sympa aussi le nombre de conflits! Une note est que j'utiliserais des drapeaux-Hrn
qui fourniraient également des informations sur le numéro de ligne.[<=>]{7}
place de cela. (Il se peut que vous ayez besoin d'un-E
indicateur pour que cela fonctionne dans grep.) Ou,<{7}
si vous n'êtes pas inquiet de balancer les marqueurs de fusion ou si vous voulez compter les conflits. (Vous pouvez également utilisergit grep
- alors vous n'avez pas besoin du-r
drapeau.)git status
affiche "les deux modifiés" à côté des fichiers qui ont des conflits au lieu de "modifié" ou "nouveau fichier", etc.la source
la source
^U
pour tout commencer avec UDD, AU, UD, UA, DU, AA, UU
DU
Cela fonctionne pour moi:
git grep '<<<<<<< HEAD'
ou
git grep '<<<<<<< HEAD' | less -N
la source
vous pouvez frapper
git ls-files -u
sur votre ligne de commande, il répertorie les fichiers avec des conflitsla source
Si vous essayez de valider, et s'il y a des conflits, alors git vous donnera la liste des conflits actuellement non résolus ... mais pas comme une simple liste. C'est généralement ce que vous voulez lorsque vous travaillez de manière interactive, car la liste se raccourcit à mesure que vous résolvez les conflits.
la source
Peut-être que cela a été ajouté à Git, mais les fichiers qui n'ont pas encore été résolus sont répertoriés dans le message d'état (état git) comme ceci:
Notez qu'il s'agit de la section Chemins non fusionnés.
la source
En supposant que vous savez où se trouve votre répertoire racine git, $ {GIT_ROOT}, vous pouvez le faire,
la source
Je l'ai toujours utilisé
git status
.peut ajouter
awk
à la fin pour obtenir uniquement les noms de fichiersgit status -s | grep ^U | awk '{print $2}'
la source
Mes 2 cents ici (même quand il y a beaucoup de réponses sympas / fonctionnelles)
J'ai créé cet alias dans mon
.gitconfig
qui va me montrer juste les noms des fichiers avec conflits ... pas tout leur chemin :)
la source
Voici ce que j'utilise pour répertorier les fichiers modifiés adaptés à la substitution de ligne de commande dans bash
Pour modifier la liste, utilisez la
$(cmd)
substitution.Ne fonctionne pas si les noms de fichiers ont des espaces. J'ai essayé d'utiliser
sed
pour échapper ou citer les espaces et la liste de sortie semblait correcte, mais la$()
substitution ne se comportait toujours pas comme souhaité.la source
L'assistant git utilitaire https://github.com/makelinux/git-wizard compte séparément les modifications conflictuelles non résolues (collisions) et les fichiers non fusionnés. Les conflits doivent être résolus manuellement ou avec mergetool. Les modifications non fusionnées résolues peuvent être ajoutées et validées généralement avec git rebase --continue.
la source
légère variation de la réponse de Charles Bailey qui donne plus d'informations:
la source
Comme souligné dans d'autres réponses, nous pouvons simplement utiliser l'état de la commande git , puis rechercher les fichiers répertoriés sous Chemins non fusionnés:
la source