2012-06-13 17 views

cevap

15

Edit arıyor ne değildir: Tabii, kolay, açık ve üzerinde -bilgisayarsız cevap, kostixnotes olarak git status'dur. Bunun dezavantajı, git status'un, çalışma kopyasıyla karşılaştırıldığında endeksin durumunu yavaşça kontrol etmesidir, oysa aşağıda sadece endeksi kontrol etmek daha hızlıdır.

Çakışan dosyaların adlarını almak için git ls-files --unmerged kullanın.

kolaylığı için
$ 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 

, (Ben kredi iddia edemez, ama orijinal kaynak hatırlayamıyorum) benim ~/.gitconfig dosyasında şu var:

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

Bu bana verir:

$ git conflicts 
path/to/conflicted_file 
sadece çatışma markerin ======= kısmı için grep kullanmak istiyorum, tek bir dosyada çatışmaların sayısını çalışmak için:

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

Yukarıdaki conflicts hattı yanı sıra sizin ~/.gitconfig aşağıdakileri ekleyebilirsiniz: Bu, verecektir

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

:

$ 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 birleştirilecek başarısız olan dosyaları gösterir otomatik olarak ve çakışma varsa, bu tür dosyaların çözümlenmiş durumunun nasıl kaydedileceğine dair ipucu ile.

+0

Evet, ancak ... * yalnızca * çakışan dosyaları gösterecek bir anahtar var mı? – shytikov

+0

@AlexeyShytikov, Offhand'i bilmiyorum, fakat el kitabından, 'git status --short' iki karakter kullanarak listelenen her dosyanın durumunu kodlayabiliyor gibi görünüyor - "Kısa Format" bölümüne bakın. Sanırım bir çağrıyı, çıktı dosyasının yalnızca ilgili bitlerini "dize" edecek ya da "grep" yapacak bir kabuk betiğindeki 'git status --short 'seçeneğine çevirmek mümkün. – kostix

+1

Diğer taraftan, yanıtı @me_and verilmiş olsa bile, betikleme gerektirir, bu yüzden onun yaklaşımını benimsemek (ve böylece kendi porselen komutunu uygulamak) daha mantıklı olabilir. – kostix

0

Burada, bash 4 üzerinde çalışan yararlı bir şey var. Tek bir dosya istatistiklerini buna ekleyebilirsiniz. çakışma sayısını temsil eden kod satırı sayısı.

#!/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 
İlgili konular