2012-06-13 14 views
8

काम करने में संघर्ष के संघर्ष/सूची की संख्या पता चला वहाँ संघर्ष (परस्पर विरोधी फ़ाइलों और उस में संघर्ष की संख्या के नाम) की सूची की समीक्षा करने के लिए कोई तरीका है? स्पष्ट बेशक, आसान, और अधिक:Git फ़ोल्डर

केवल एक चीज मुझे पता चला है की समीक्षा करने के पूर्व-निर्मित .git/MERGE_MSG फ़ाइल है ... लेकिन यह है कि क्या मैं वास्तव में के लिए ...

उत्तर

15

संपादित खोज नहीं है मुक्त उत्तर देने का उत्तर git status है, kostixnotes के रूप में। इसका नुकसान यह है कि git status कार्यशील प्रति की तुलना में इंडेक्स की स्थिति की जांच करता है, जो धीमा है, जबकि नीचे केवल इंडेक्स की जांच करता है, एक तेज़ ऑपरेशन।

प्राप्त करने के लिए फ़ाइलों को विरोध हुआ हैं के नाम, git ls-files --unmerged का उपयोग करें।

$ 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 

आसानी के लिए, मैं अपने ~/.gitconfig फ़ाइल में निम्न है (मैं क्रेडिट दावा नहीं कर सकता, लेकिन मैं मूल स्रोत याद नहीं कर सकते):

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

यह मैं देता है:

$ git conflicts 
path/to/conflicted_file 

एक एकल फाइल में संघर्ष की संख्या बाहर काम करने के लिए, मैं सिर्फ संघर्ष मार्कर के ======= भाग के लिए grep का उपयोग करेंगे:

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

आप अपने ~/.gitconfig के लिए निम्न ऊपर conflicts लाइन के साथ ही जोड़ सकते हैं:

[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 जो मर्ज करने में विफल रहा है कर रहे हैं फ़ाइलों से पता चलता स्वचालित रूप से और इस तरह की फ़ाइलों की हल की गई स्थिति को रिकॉर्ड करने के संकेत के साथ संघर्ष करते हैं।

+0

हाँ, लेकिन ... क्या * केवल * विरोधाभासी फाइलों को दिखाने के लिए कोई स्विच है? – shytikov

+0

@AlexeyShytikov, मुझे ऑफहैंड नहीं पता है, लेकिन मैन्युअल से, ऐसा लगता है कि 'गिट स्टेटस - शॉर्ट' दो अक्षरों का उपयोग करके सूचीबद्ध प्रत्येक फ़ाइल की स्थिति को कोड करने में सक्षम है - "लघु प्रारूप" अनुभाग देखें। मुझे लगता है कि कॉल को 'गिट स्टेटस - शोर्ट' में एक शेल स्क्रिप्ट में लपेटना संभव है जो 'sed' या' grep' केवल आउटपुट के प्रासंगिक बिट्स होगा। – kostix

+1

दूसरी ओर, उत्तर @me_and को स्क्रिप्टिंग की आवश्यकता होती है, इसलिए हो सकता है कि वह अपना दृष्टिकोण लेने के लिए और अधिक तर्कसंगत हो (और इस प्रकार अपने स्वयं के पोर्सिलीन कमांड को कार्यान्वित करें)। – kostix

0

यहां कुछ उपयोगी है जो बैश 4 पर काम करता है। आप इस प्रकार के एकल फ़ाइल आंकड़ों को जोड़ सकते हैं, उदा। कोड की रेखाओं की संख्या जो विवादों की संख्या का प्रतिनिधित्व करती हैं।

#!/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