git diff - मुझे लाइन अंत परिवर्तन दिखाओ?


85

मेरा संपादक मेरे स्रोत फ़ाइलों की लाइन अंत बदल रहा है। जब मैं करता हूं git diff, तो मैं एक ही पंक्ति को दो बार देखता हूं - एक बार साथ -और एक बार +- बिना किसी दृश्य अंतर के साथ।

git diffमुझे यह दिखाने के लिए कैसे मिलता है कि वास्तव में यह परिवर्तन क्या था?


इस के डुप्लिकेट के पास (नीचे भी उल्लेख किया गया है): मेरा पसंदीदा हैgit config diff.wsErrorHighlight all
जोशुआ गोल्डबर्ग

जवाबों:


64

पहले, सुनिश्चित करें कि आप रंगीन आउटपुट (जैसे के साथ git diff --color) का उपयोग कर रहे हैं और आपने व्हाट्सएप को हाइलाइट करने में सक्षम किया है (जैसे)

git config color.diff.whitespace "red reverse"

यह सभी मामलों में काम नहीं कर सकता है, हालांकि, हटाए गए लाइनों के gitलिए अनुगामी व्हाट्सएप को उजागर करने के लिए प्रकट नहीं होता है । आपके द्वारा हटाए गए व्हाट्सएप को देखने के लिए, बस उपयोग करें

git diff -R

तुलना के 'जोड़ा' पक्ष पर व्हॉट्सएप को डालने के लिए, जहां यह हाइलाइट हो जाता है।

अधिक विवरण के लिए, इस SO प्रश्न के उत्तर देखें ।


मेरे पास git संस्करण 2.1.4 है, और मैंने git config कमांड के सुझाव पर काम किया है। लेकिन git diff में अभी भी कोई अंतर नहीं दिख रहा है। अगर मैं git को hexdump -C में बदल देता हूं, तो वहां कुछ भी नहीं दिखा है: 000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|7d '}' कर्ली-ब्रेस है।
कार्डिफ स्पेस मैन

37

आप निम्न कमांड के साथ लाइन-एंडिंग अंतर देख सकते हैं।

git diff | cat -v

फिर "^ M" को CRLF (DOS) को समाप्त करने के लिए प्रिंट किया जाता है, LF (Unix) को समाप्त करने के लिए कुछ भी नहीं।

जाहिरा तौर पर गिट डिफरेंस सही काम कर रहा है, CRLF को समाप्त करने के लिए CR और LF वर्णों की छपाई कर रहा है। लेकिन क्योंकि CR कंसोल द्वारा उपभोग किया जाता है, हम इसे देख नहीं सकते। कैट -v का उपयोग करके, हम इसे दृश्यमान बना सकते हैं।


इसी तरह का एक और तरीका है git diff > somediff && vi somediff, विम CRLF को ^ M के रूप में दिखाता है। लेकिन cat -vसाफ है।
निक एक्स

1
+1 मुझे सीखने देने के लिए कम से कम, इसका उपयोग करने के 20 वर्षों के बाद, इसका एक विकल्प, catजिसके बारे में मुझे जानकारी नहीं थी। :-)
हैराल्ड

24

व्हाट्सएप परिवर्तन देखने का एक तरीका चरित्र-दर-चरित्र "शब्द अंतर" के साथ करना है

git diff --color --word-diff-regex=.

यह लाइनों में हर जगह सभी व्हाट्सएप परिवर्तनों को उजागर करता है । निकाला गया खाली स्थान के में लपेटा जाता है [-और -]और में खाली स्थान के जोड़ा {+और +}

वैकल्पिक रूप से, जैसा कि एलेक्स ने सुझाव दिया है

git diff --color --ws-error-highlight=new,old

लाइनों के सिरों पर सभी व्हाट्सएप परिवर्तन पर प्रकाश डाला गया ।


11
git diff --ws-error-highlight=new,old

हाइलाइट किए गए व्हाट्सएप परिवर्तित लाइनों में भिन्न होते हैं।


आप किस संस्करण का उपयोग कर रहे हैं? मेरे सिस्टम पर git 2.1.4 कहता है --त्रुटि-हाइलाइट-नया, पुराना एक अमान्य विकल्प है।
कार्डिफ स्पेस मैन

यह विकल्प 2015 में git 2.5.0 में जोड़ा गया था।
मिनीगॉड

5

एक ग्राफिकल डिफ टूल आपको बदलाव को बेहतर तरीके से दिखाएगा - प्रयास करें git difftool

व्हाट्सएप दिखाने के लिए मेल्ड का उपयोग करें , और वरीयताओं को सेट करें। (संपादित करें -> वरीयताएँ -> व्हॉट्सएप दिखाएं।)

अन्य ग्राफिकल टूल में संभवतः समान विकल्प हैं - @ कॉटन का उत्तर + टिप्पणी आपको बताती है कि यह कैसे करना है।


एक चित्रमय भिन्न उपकरण उपलब्ध नहीं हो सकता है। @ पॉल-व्हाट्एकर का उत्तर प्रश्न (कुछ टर्मिनल) द्वारा निहित संदर्भ में काम करेगा।
BEON

अब यह अजीब है, लेकिन git difftool --tool=meld doesn'tयहां तक ​​कि पिघला हुआ लॉन्च भी। मुझे नहीं पता कि क्या यह है क्योंकि एक रिबास प्रगति पर है या नहीं।
कार्डिफ स्पेस मैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.