2015-10-15 11 views
29

के बीच गिट-डिफ के साथ परिवर्तनों को बदलता है, मैं एक कोडेबेस के माध्यम से जा रहा हूं और व्हाइटस्पेस विषमता को ठीक कर रहा हूं और आम तौर पर इंडेंटेशन और ऐसी चीजों को ठीक कर रहा हूं, और मैं यह सुनिश्चित करना चाहता हूं कि मैंने अनजाने में कोई अन्य परिवर्तन नहीं किया है, तो मैं थोड़ी देर के खाली स्थान के मतभेद की अनदेखी कर सब बदली हुई फाइलों में मतभेद प्रदर्शित करने के लिए git diff -w कर रहा हूँ। समस्या यह है कि यह वास्तव में सभी खाली स्थान के मतभेदों को कम से कम क्या मैं केवल खाली स्थान के मतभेदों पर विचार अनदेखी नहीं है। उदाहरण के लिए, git diff -w से निम्नलिखित उत्पादन, मेंअनदेखा करें * सभी * व्हाइटस्पेस

-"Links": 
-{ 
- 
- "Thermal": 
- 
-{ 
- 
+ "Links": { 
+ "Thermal": { 

आप की पंक्ति के अंत पर देख सकते हैं कि मैं केवल

  1. हटाया ज़रूरत से ज़्यादा रिक्त लाइनों है
  2. डाल घुंघराले ब्रेसिज़ कुंजी जिसका मूल्य वे खोलें, और
  3. संदर्भ

फिट करने के लिए इंडेंटदेखा जैसे कि यह पहली बार में एक जवाब पेश कर सकती है, लेकिन यह दो विशिष्ट फ़ाइलों, नहीं दो विशिष्ट के बीच करता है के बीच मतभेद से संबंधित है। बाकी सब कुछ एक मरे हुए अंत के साथ-खोजकर कर दिया गया था। उदाहरण के लिए, this question विलय, नहीं मतभेद प्रदर्शित, और शब्द-स्तरीय अंतर प्रदर्शित साथ this question सौदों, और इसके आगे के बारे में है।

उत्तर

24

शायद एक बेहतर जवाब है, लेकिन सबसे अच्छा समाधान मैं अब तक मिल गया है यह है।

सबसे पहले, आप "खाली स्थान के" कि Git वर्तमान में उपयोग कर रहा है की परिभाषा नियंत्रण करना होगा। या अपनी परियोजना में .gitconfig संपादित करते हैं, को शामिल करने के

[core] 
    whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent 

इसके बाद, आप का इस्तेमाल किया एक शब्द की परिभाषा नियंत्रण करना होगा। बस git diff -w उपयोग करने के बजाय, --word-diff-regex=[^[:space:]] जोड़ें:

git diff -w --word-diff-regex=[^[:space:]] 

तुम अब भी संदर्भ है, जो (मेरे मामले में, के बाद से मैं सुनिश्चित करने के लिए वहाँ कोई मतभेद खाली स्थान के मतभेदों को छोड़कर हैं कि कोशिश कर रहा हूँ) नहीं है देखेंगे उपयोगी। आप -U0 उपयोग कर सकते हैं, Git बताने के लिए, आप संदर्भ की 0 लाइनों देने के लिए तो जैसे

git diff -w -U0 --word-diff-regex=[^[:space:]] 

लेकिन आप अभी भी उत्पादन है कि काफी संदर्भ की तरह लग रहा हो, लेकिन यह अभी भी सभी परिवर्तनों के माध्यम से देख तुलना में काफी बेहतर है ध्यान से और मैन्युअल रूप से सुनिश्चित करें कि वे केवल रिक्त स्थान परिवर्तन कर रहे हैं बनाने के लिए।

+1

@Torek - अभी तक गिट भलाई का एक और टुकड़ा। क्यों नरक में सभी सफेद जगहों के बिना diff मुश्किल है ??? मैं एक विंडोज़ मशीन पर हूं जो विजुअल स्टूडियो प्रोजेक्ट फाइलों पर पीआर का मूल्यांकन करने की कोशिश कर रहा है। मुझे सीआर, एलएफ या सीआरएलएफ मतभेदों की परवाह नहीं है, लेकिन यही वह है जो गिट मेरे टर्मिनल को भर रहा है। – jww

9

Git-diff साथ सभी खाली स्थान के परिवर्तन पर ध्यान न दें के बीच करता है

यह सवाल ऐसा देखा पहली बार में एक जवाब पेश कर सकती है, लेकिन यह दो विशिष्ट फ़ाइलों, दो विशिष्ट प्रतिबद्ध के बीच नहीं के बीच मतभेद से संबंधित है। खोज के द्वारा बाकी सबकुछ भी एक मृत अंत था ....

मुझे लगता है कि आपको परेशानी हो रही है क्योंकि गिट नौकरी के लिए गलत उपकरण है। यह काम आसान नहीं है, और उपकरण को समायोजित करने के उपज गलत दृष्टिकोण है।उपकरण आपके लिए काम करना चाहिए और इसके विपरीत नहीं है।

दूसरा क्लोन करें, और उसके बाद प्रश्न में प्रारंभिक संशोधन की जांच करें। फिर अपने वर्तमान संशोधन का उपयोग करके उन पर नियमित अंतर चलाएं: diff -bur --ignore-all-space <dir1> <dir2>

यहाँ some of the options for diff

-i, --ignore-case 
     ignore case differences in file contents 

-E, --ignore-tab-expansion 
     ignore changes due to tab expansion 

-Z, --ignore-trailing-space 
     ignore white space at line end 

-b, --ignore-space-change 
     ignore changes in the amount of white space 

-w, --ignore-all-space 
     ignore all white space 

-B, --ignore-blank-lines 
     ignore changes where lines are all blank 
0

Bitbucket उपयोगकर्ताओं के लिए, वहाँ इस के लिए एक प्रस्तावित ठीक है, लेकिन यह अभी तक कोडित नहीं किया गया है, और शायद जब तक वहाँ पर्याप्त रुचि नहीं है जाएगा। आप बिटबकेट साइट पर जा सकते हैं और अपना समर्थन दिखा सकते हैं। शुरुआत में मैंने बिटबकेट में समाधान खोजने के दौरान वर्तमान पृष्ठ पाया, इसलिए यदि इस स्थिति में अन्य लोग हैं, तो कृपया here पर जाएं और वोट दें!

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