2012-06-13 2 views

Antwort

15

bearbeiten wirklich suchen: Natürlich, das einfach, klar und über -engineering free antwort ist git status, wie kostixnotes. Der Nachteil davon ist, dass git status den Status des Index im Vergleich zu der Arbeitskopie überprüft, die langsam ist, während die unten nur den Index überprüft, eine viel schnellere Operation.

Verwenden Sie git ls-files --unmerged, um die Namen der konfliktbehafteten Dateien abzurufen.

$ git ls-files --unmerged 
100755 f50c20668c7221fa6f8beea26b7a8eb9c0ae36e4 1  path/to/conflicted_file 
100755 d0f6000e67d81ad1909500a4abca6138d18139fa 2  path/to/conflicted_file 
100755 4cb5ada73fbe1c314f68c905a62180c8e93af3ba 3  path/to/conflicted_file 

Zur Erleichterung, ich habe (beanspruche ich nicht Kredit, aber ich kann die ursprüngliche Quelle nicht erinnern) folgend in meiner ~/.gitconfig Datei:

[alias] 
    conflicts = !git ls-files --unmerged | cut -f2 | sort -u 

Das gibt mir:

$ git conflicts 
path/to/conflicted_file 

Um die Anzahl der Konflikte in einer einzigen Datei ausrechnen, ich habe gerade grep für den ======= Teil des Konflikts Marker verwenden würde:

$ grep -c '^=======$' path/to/conflicted_file 
2 

Sie könnten Sie folgendes zu Ihrem ~/.gitconfig sowie die conflicts Zeile oben hinzufügen:

[alias] 
    count-conflicts = !grep -c '^=======$' 
    count-all-conflicts = !grep -c '^=======$' $(git conflicts) 

Diese Sie geben:

$ git conflicts 
path/to/a/conflicted_file 
path/to/another/different_conflicted_file 

$ git count-conflicts path/to/a/conflicted_file 
2 

$ git count-all-conflicts 
5 
1

git status zeigt Dateien, die zusammengeführt werden fehlgeschlagen werden automatisch und haben Konflikte, mit dem Hinweis, wie Sie den aufgelösten Zustand solcher Dateien aufzeichnen.

+0

Ja, aber ... gibt es einen Schalter, um * nur * widersprüchliche Dateien anzuzeigen? – shytikov

+0

@AlexeyShytikov, ich weiß nicht ohne weiteres, aber aus dem Handbuch, es sieht aus wie 'git status --short' ist in der Lage, den Status jeder Datei mit zwei Zeichen aufgeführt - siehe Abschnitt" Short Format ". Ich denke, es ist möglich, einen Aufruf von 'git status --short' in ein Shell-Skript zu schreiben, das nur die relevanten Bits der Ausgabe" sed "oder" grep "würde. – kostix

+1

Auf der anderen Seite, die Antwort @me_and gab erfordert Scripting sowieso, so kann es logischer sein, seinen Ansatz zu nehmen (und damit Ihren eigenen Porzellan-Befehl implementieren). – kostix

0

Hier ist etwas nützlich, das auf bash 4 funktioniert. Sie können alle Arten von einzelnen Datei Statistiken hinzufügen, z. die Anzahl der Codezeilen, die die Anzahl der Konflikte darstellen.

#!/usr/bin/env bash 

shopt -s globstar 
for theFile in ./**/*; do 
    if [ -f "$theFile" ] 
    then 
     conflicts=`grep -c '^=======$' "$theFile"` 
     if [ "$conflicts" != "0" ] 
      then 
      echo "$theFile $conflicts" 
     fi 
    fi 
done