2010-01-21 7 views
25

क्या बदली गई फ़ाइलों और स्टेजिंग/चेक की गई फ़ाइलों के बीच निर्देशिका तुलना करने के लिए गिट difftool कमांड प्राप्त करना संभव है?गिट difftool?

तो आदर्श रूप से, यदि 2 फाइलें बदल गई हैं, तो वे केवल 2 दिखाए जाएंगे, लेकिन निर्देशिका की तुलना में।

मैंने गिट को समांतर में सभी फ़ाइल अंतर देने के बारे में पोस्ट पढ़ी हैं, इसलिए BeyondCompare जैसे टूल्स में सभी the diffs in tabs हैं, लेकिन मैं इससे खुश नहीं हूं!

कोई बदली गई फ़ाइलों की एक प्रतिलिपि फ़ाइलों में स्टेजिंग/चेक से एक अस्थायी फ़ोल्डर में खींच सकता है, और उसके बाद इसे खोल सकता है। क्या यह एकमात्र विकल्प है?

+0

जवाब मैं अपने (समान) प्रश्न आप मदद कर सकता है पर मिला : http://stackoverflow.com/questions/4248830/directory-comparison-of-git-branches –

उत्तर

37

अद्यतन जून 2012 (2 और एक आधे साल बाद):

यह (फ़ाइल-दर-फ़ाइल के बजाय निर्देशिकाओं की तुलना) जल्द ही उपलब्ध हो रहा है:
[ANNOUNCE] Git 1.7.11.rc1 देखें:

" git difftool "--dir-diff" बाहरी diff उपकरण को हल करने का विकल्प जो दो निर्देशिका अस्थायी की तुलना में दो अस्थायी निर्देशिकाओं को पॉप्युलेट करने के बाद एक समय में, बाहरी के उदाहरण को चलाने के बजाय सीखा फ़ाइल प्रति जोड़े प्रति उपकरण।

देखें "Patch difftool: teach difftool to handle directory diffs"


मूल जवाब (जनवरी 2010)

एक एक अस्थायी फ़ोल्डर में मचान से बदली हुई फ़ाइलें/फाइलों में जाँच की एक प्रति खींच सकता है , और फिर इसे खोलो। क्या यह एकमात्र विकल्प है?

मूल रूप से हाँ:

आप difftool स्क्रिप्ट होगा:

  • 2 अस्थायी निर्देशिका बनाएं
  • एक diff उपकरण
  • कॉल Git diff
    • जो तब के रूप में खुद को परिभाषित करता है
    • diff को फ़ाइल के लिए स्वयं कॉल करें
    • कि मोड में, एक ही स्क्रिप्ट, प्रत्येक फ़ाइलों के लिए केवल दो संस्करण diff करने के लिए दो अस्थायी निर्देशिका
  • में कॉपी करने के बाद पर जाने के लिए और दो अस्थायी निर्देशिका पर diff उपकरण (beyondCompare या WinMerge की तरह) फोन

आपके पास this question में पहला उदाहरण है।

+1

क्यों 2 temp निर्देशिकाएं? बदले गए स्रोतों के विरुद्ध गिट सैंडबॉक्स के साथ बदली गई फ़ाइलों की तुलना करने के लिए सबसे अच्छा हो? इसलिए इसकी केवल उन फाइलों में चेक की गई है जो बदली गई हैं जिन्हें एक टेम्पल डीआईआर में कॉपी/आउट करने की आवश्यकता है? यह भी सबसे अच्छा है क्योंकि कोई भी चेकइन फ़ाइलों से बदलकर सैंडबॉक्स में परिवर्तनों को मर्ज करना चाहता है। क्या किसी के पास इस तरह के समर्थन मानक को गिट में बनाने का कोई संकेत है? –

+0

अधिक जानकारी के लिए यह जवाब देखें: http://stackoverflow.com/a/10879804/6309 – VonC

2

मैं हमेशा --dirstat=files का उपयोग करें:

[email protected]:virenze$ git diff --dirstat=files 
    4.1% modules/custom/virenze_conversations/ 
    7.0% modules/custom/virenze_crs/ 
    8.3% modules/custom/ 

जिसका मतलब है मैं dirs virenze_conversations और custom में virenze_crs हटा दिया है। (मैं नहीं जानता प्रतिशत क्या मतलब है ...)

आप शायद सभी सामान्य diff विकल्पों का उपयोग कर सकते हैं: --cached, शाखा का नाम आदि

संबंधित मुद्दे