गिट-डिफरेंस के आउटपुट में व्हाइट स्पेस को कलर करना


151

कोड स्वरूपण के बारे में मैं शुद्धतावादी की तरह हूं :)। मैं बहुत बार अनावश्यक सफेद रिक्त स्थान (केवल ws, ws के अंत में लाइनों आदि) को हटा देता हूं। मैंने भी उस तरह की रेखाओं को लाल रंग में दिखाने के लिए विम सेट किया है।

मेरी समस्या यह है कि git-diff का उपयोग करते हुए मैं अक्सर कुछ इस तरह से देखता हूं:

-      else{ 
+      else{

यहां तक ​​कि अगर मैं git-diff रंग का हूं तो मुझे अंतर नहीं दिखाई दे सकता है (उस विशेष स्थिति में मैंने लाइन के अंत में 1 ws हटा दिया है)। क्या यह बताने का कोई तरीका है कि लाल रंग में रंगे ws-diff को प्रदर्शित करें? (उदाहरण के लिए, जो / \ s + $ / regexp से मेल खाते हैं)।


4
यदि आप रंगों (स्वैप अग्रभूमि और पृष्ठभूमि) को उल्टा करते हैं, तो व्हॉट्सएप इस तरह बदल जाएगा। कई टर्मिनलों में इसे पूरा करने का एक आसान तरीका यह है कि माउस के साथ प्रश्न में पाठ को उजागर किया जाए। यह चाल केवल एक रंगीन अंतर के साथ काम करती है, निश्चित रूप से।
फाल्क्स

जवाबों:


172

आपको color.diff.whitespace config सेटिंग सेट करनी पड़ सकती है, जैसे:

 git config color.diff.whitespace "red reverse"

(मैं मान रहा हूं कि आपके पास पहले से ही है color.diffया color.uiसेट है autoक्योंकि आप कहते हैं कि आप git diffवैसे भी रंगीन पैच देखते हैं ।)

यदि आप लाल रंग में हाइलाइट किए गए व्हॉट्सएप त्रुटियों के प्रकार को ठीक करना चाहते हैं, तो आप बदल सकते हैं core.whitespace, लेकिन blank-at-eolडिफ़ॉल्ट रूप से सक्षम है, इसलिए आपको संभवतः उस उदाहरण को बदलने की आवश्यकता नहीं होगी जिसका आप उल्लेख करते हैं।

भ्रम का एक संभावित स्रोत यह है कि आउटपुट में git diff, व्हाट्सएप त्रुटियों को केवल उन लाइनों में हाइलाइट किया जाता है जो पेश की जाती हैं, न कि जो हटा दी जाती हैं। ( अपडेट: जैसा कि पॉल व्हिटेकर अपने जवाब में बताते हैं , जिसे आपको वोट देना चाहिए :), आप इन के साथ अंतर की भावना को उलट कर देख सकते हैं git diff -R।)

आप इन कॉन्फिग ऑप्शन पर git config man पेज में और डॉक्यूमेंट पा सकते हैं

यदि आप -Rकीचड़ का उपयोग नहीं करना चाहते हैं तो आप अलग-अलग मैन पेज से व्हाइटस्पेस त्रुटि हाइलाइट विकल्प का उपयोग कर सकते हैं ।

--ws-त्रुटि उजागर =

Color.diff.whitespace द्वारा निर्दिष्ट रंग में निर्दिष्ट लाइनों पर व्हॉट्सएप त्रुटियों को हाइलाइट करें। पुराने, नए, संदर्भ की अल्पविराम से अलग की गई सूची है। जब यह विकल्प नहीं दिया जाता है, तो नई लाइनों में केवल व्हाट्सएप त्रुटियों को उजागर किया जाता है। उदा - त्रुटि-हाइलाइट-हाइलाइट = नई, पुरानी हाइलाइट्स दोनों हटाई गई और जोड़ी गई लाइनों पर व्हॉट्सएप की त्रुटियां। सभी को पुराने, नए, संदर्भ के लिए शॉर्ट-हैंड के रूप में इस्तेमाल किया जा सकता है।

git diff --ws-error-highlight=new,old <file>

या

git diff --ws-error-highlight=all <file>

मुझे इसे स्थायी रूप से चालू करने और अलग से एक उपनाम का उपयोग करने से अलग करने के तरीके का पता नहीं है:

git config alias.df 'diff --ws-error-highlight=all'

अब आप उपयोग कर सकते हैं:

git df <file>

लाल रंग में परिवर्तन देखने के लिए।

ध्यान दें कि Git 2.11 (Q4 2016) के साथ , इस उपनाम को इसके साथ प्रतिस्थापित किया जा सकता है:

git config diff.wsErrorHighlight all

परgit diff और पर git configडॉक्टर देखें ।


33
"भ्रम का एक संभावित स्रोत यह है कि git diff के आउटपुट में, व्हॉट्सएप की त्रुटियां केवल उन लाइनों में हाइलाइट की जाती हैं जिन्हें पेश किया जाता है, न कि जो हटाए जाते हैं।" बिल्कुल सही! और इसे हटाए गए लाइनों के लिए भी दिखाने का कोई तरीका नहीं है? (हे, यह अलग है :))
राडार

6
अपने ~ / .itconfig
simlmx

17
: @radarek: आप रिवर्स विकल्प का उपयोग कर सकते हैंgit diff -R
blueyed

6
क्या इसके लिए कोई बग रिपोर्ट है? यदि नहीं, तो ऐसा लगता है कि वहाँ होना चाहिए।
अजेदी ३२

3
यह काम किया git config diff.wsErrorHighlight allgit config --global [...]परिवर्तनों को वैश्विक बनाने के लिए उपयोग करें (अर्थात सभी रेपो को प्रभावित करते हुए)।
फेलिप अल्वारेज

141

git diff -Rहटाए गए लाइनों को जोड़ा लाइनों में बदलने के लिए उपयोग करें । फिर अनुगामी व्हाट्सएप पर प्रकाश डाला जाएगा।

(यह मानता है कि आपके पास पहले से ही व्हाट्सएप हाइटलाइटिंग सक्षम है, जो मार्क के जवाब से रंग सेटिंग्स के अनुसार है। इस विधि के लिए क्रेडिट जूनो की पोस्ट http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal- पर जाता है। git-diff-td5653205.html के साथ ।)

उदाहरण के लिए, जब एक फाइल को DOS लाइन के अंत से यूनिक्स में परिवर्तित किया जाता है, तो git diff -Rमुझे स्पष्ट रूप से ^Mवर्ण के अंत में प्रदर्शित होने वाले अक्षर (डिस) दिखाई देते हैं। बिना -R(और -wआदि के बिना भी ) यह दर्शाता है कि पूरी फ़ाइल बदल गई है, लेकिन यह नहीं दिखाता है कि कैसे।


4
बेशक, git diff | cat -A | less -Sअगर आप हताश हैं, तो आप भी कर सकते हैं, लेकिन गाड़ी के रिटर्न के अलावा, catवस्तुतः किसी भी रंग को उजागर करने वाले भागने को भी प्रदर्शित करेगा।
पॉल व्हिटकेर

3
@Pa__hittaker cat -Aपोर्टेबल नहीं है। बीएसडी बिल्ली पर, ऐसा कोई विकल्प नहीं है। कृपया cat -vetइसके बजाय उपयोग करें ।
7heo.tk 8

9

का उपयोग करें git diff --color | less -R-Rरंग नियंत्रण कोड मानव के अनुकूल बनाता है।

तब आप lessनियमित अभिव्यक्ति खोज का उपयोग कर सकते हैं , जैसे

/[[:space:]]+$

यह नियमित अभिव्यक्ति भी vimवैसे ही काम करती है ।
जोस अल्बान

इस अंतिम विचार less -Rने मुझे इसके ls --colorमाध्यम से पाइप करना आसान बना दिया less
Menachem

0

मेरा संस्करण git diffपहले से ही ऐसा लगता है - मेरे पास 1.7.4.1 है और सेट किया है color.ui = auto


12
मैं सिर्फ git 1.7.5.1 के साथ परीक्षण किया है और यह निश्चित रूप से हटाए जा रहे लाइनों में अनुगामी व्हाट्सएप को उजागर नहीं करता है।
घुसपैठिए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.