खोज…


वाक्य - विन्यास

  • git diff [options] [<commit>] [--] [<path>…​]
  • git diff [options] --cached [<commit>] [--] [<path>…​]
  • git diff [options] <commit> <commit> [--] [<path>…​]
  • git diff [options] <blob> <blob>
  • git diff [options] [--no-index] [--] <path> <path>

पैरामीटर

पैरामीटर विवरण
-पी, -यू, - बैच पैच उत्पन्न करें
-एस, -नो-पैच दमन अलग उत्पादन। git show जैसे कमांड्स के लिए उपयोगी है जो कि डिफ़ॉल्ट रूप से पैच दिखाते हैं, या --patch का प्रभाव रद्द करते हैं
--कच्चा कच्चे प्रारूप में अंतर उत्पन्न करें
--diff-एल्गोरिथ्म = एक अलग एल्गोरिथ्म चुनें। वेरिएंट निम्नानुसार हैं: myers , minimal , patience , histogram
--सारांश विस्तारित हेडर जानकारी जैसे क्रिएशन, नाम और मोड में बदलाव का एक संक्षिप्त सारांश आउटपुट
केवल---name केवल परिवर्तित फ़ाइलों के नाम दिखाएं
--name-स्थिति परिवर्तित फ़ाइलों के नाम और स्थिति दिखाएं सबसे सामान्य स्थितियां M (संशोधित), A (जोड़ा गया), और D (हटाए गए) हैं
--चेक यदि चेतावनियों में परिवर्तन मार्कर या व्हाट्सएप त्रुटियों का परिचय देता है तो चेतावनी दें। क्या माना जाता है core.whitespace त्रुटियां core.whitespace कॉन्फ़िगरेशन द्वारा नियंत्रित की जाती हैं। डिफ़ॉल्ट रूप से, अनुगामी व्हाट्सएप (लाइनों सहित जिसमें पूरी तरह से व्हाट्सएप शामिल हैं) और एक स्पेस कैरेक्टर जिसका तुरंत लाइन के शुरुआती इंडेंट के अंदर एक टैब कैरेक्टर होता है, व्हॉट्सएप एरर माना जाता है। यदि समस्याएं मिलती हैं, तो गैर-शून्य स्थिति से बाहर निकलता है। --Exit- कोड के साथ संगत नहीं है
--full सूचकांक वर्णों के पहले मुट्ठी भर के बजाय, पैच-अप आउटपुट के दौरान "इंडेक्स" लाइन पर पूर्ण पूर्व और बाद की छवि वाली बूँद ऑब्जेक्ट नाम दिखाएं
--binary --full-index अलावा, आउटपुट एक बाइनरी भिन्न होता है जिसे git apply साथ लागू किया जा सकता है
-पाठ सभी फाइलों को टेक्स्ट की तरह ट्रीट करें।
--रंग रंग मोड सेट करें; यानी उपयोग - रंग --color=always यदि आप कम से कम एक पाइप को अलग करना चाहते हैं और गिट का रंग रखना चाहते हैं

कार्य शाखा में अंतर दिखाएं

git diff

इससे पहले की ओर से वर्तमान शाखा पर अस्थिर परिवर्तन दिखाई देंगे। यह केवल इंडेक्स के सापेक्ष परिवर्तन दिखाएगा, जिसका अर्थ है कि यह दिखाता है कि आप अगले कमिट में क्या जोड़ सकते हैं, लेकिन नहीं। इन परिवर्तनों को जोड़ने (स्टेज) के लिए, आप git add उपयोग कर सकते git add

यदि किसी फ़ाइल का मंचन किया जाता है, लेकिन उसे मंचित करने के बाद संशोधित किया गया था, तो git diff वर्तमान फ़ाइल और चरणबद्ध संस्करण के बीच अंतर दिखाएगा।

चरणबद्ध फ़ाइलों के लिए अंतर दिखाएं

git diff --staged

यह पिछली प्रतिबद्ध और वर्तमान में मंचित फाइलों के बीच के बदलावों को दिखाएगा।

नोट: आप एक ही चीज़ को पूरा करने के लिए निम्न आदेशों का भी उपयोग कर सकते हैं:

git diff --cached

जो सिर्फ --staged या के लिए एक पर्याय है

git status -v

जो status कमांड की वर्बोज़ सेटिंग्स को ट्रिगर करेगा।

मंचन और अस्थिर दोनों परिवर्तन दिखाएं

सभी चरणबद्ध और अस्थिर परिवर्तन दिखाने के लिए, उपयोग करें:

git diff HEAD

नोट: आप निम्न कमांड का भी उपयोग कर सकते हैं:

git status -vv

अंतर यह है कि उत्तरार्द्ध का उत्पादन वास्तव में आपको बताएगा कि कौन से परिवर्तन प्रतिबद्ध हैं और जो नहीं हैं।

दो आवागमन के बीच परिवर्तन दिखाएं

git diff 1234abc..6789def    # old   new

उदाहरण: अंतिम 3 में किए गए परिवर्तन दिखाएं

git diff @~3..@    # HEAD -3   HEAD

नोट: दो डॉट्स (..) वैकल्पिक है, लेकिन स्पष्टता जोड़ता है।

यह कमिट्स के बीच के पाठ्य अंतर को दिखाएगा, चाहे वे पेड़ में कहीं भी हों।

कार्य निर्देशिका में सभी संशोधनों को देखने के लिए मेल्ड का उपयोग करना

git difftool -t meld --dir-diff

कार्यशील निर्देशिका परिवर्तन दिखाएगा। वैकल्पिक रूप से,

git difftool -t meld --dir-diff  [COMMIT_A] [COMMIT_B]

2 विशिष्ट कमिट्स के बीच अंतर दिखाएगा।

किसी विशिष्ट फ़ाइल या निर्देशिका के लिए अंतर दिखाएं

git diff myfile.txt

निर्दिष्ट फ़ाइल ( myfile.txt ) की पिछली प्रतिबद्धताओं और स्थानीय रूप से संशोधित संस्करण के बीच परिवर्तनों को दिखाता है जो अभी तक मंचित नहीं हुआ है।

यह निर्देशिकाओं के लिए भी काम करता है:

git diff documentation

उपरोक्त निर्दिष्ट निर्देशिका ( documentation/ ) और इन फ़ाइलों के स्थानीय रूप से संशोधित संस्करणों में सभी फ़ाइलों की पिछली प्रतिबद्धताओं के बीच परिवर्तन दिखाता है, जिनका अभी तक मंचन नहीं किया गया है।

किसी दिए गए कमिट में फ़ाइल के कुछ संस्करण और स्थानीय HEAD संस्करण के बीच का अंतर दिखाने के लिए आप उस प्रतिबद्ध को निर्दिष्ट कर सकते हैं जिसकी आप तुलना करना चाहते हैं:

git diff 27fa75e myfile.txt

या यदि आप दो अलग-अलग आवागमन के बीच संस्करण देखना चाहते हैं:

git diff 27fa75e ada9b57 myfile.txt

हैश ada9b57 द्वारा निर्दिष्ट संस्करण के बीच का अंतर और शाखा my_branchname पर नवीनतम कमिट के लिए केवल रिश्तेदार निर्देशिका के लिए my_changed_directory/ आप ऐसा कर सकते हैं:

git diff ada9b57 my_branchname my_changed_directory/

लंबी लाइनों के लिए शब्द-भेद देखना

git diff [HEAD|--staged...] --word-diff

बदले हुए लाइनों को प्रदर्शित करने के बजाय, यह लाइनों के भीतर अंतर प्रदर्शित करेगा। उदाहरण के लिए, इसके बजाय:

-Hello world
+Hello world!

जहां पूरी पंक्ति को परिवर्तित के रूप में चिह्नित किया गया है, word-diff आउटपुट आउटपुट को निम्न में बदल देता है:

Hello [-world-]{+world!+}

आप मार्कर को छोड़ सकते हैं [- , -] , {+ , +} निर्दिष्ट द्वारा --word-diff=color या --color-words । यह केवल अंतर को चिह्नित करने के लिए रंग कोडिंग का उपयोग करेगा:

Git diff-color-words का उपयोग करने का उदाहरण

सामान्य पूर्वज सहित तीन-तरफा मर्ज देखना

git config --global merge.conflictstyle diff3

डिफ़ॉल्ट रूप में diff3 शैली को सेट करता है: दो फ़ाइलों को दिखाते हुए, विवादित वर्गों में सामान्य प्रारूप के बजाय:

<<<<<<< HEAD
left
=======
right
>>>>>>> master

इसमें मूल पाठ (सामान्य पूर्वज के रूप में आने वाला) वाला एक अतिरिक्त अनुभाग शामिल होगा:

<<<<<<< HEAD
first
second
||||||| 
first
=======
last
>>>>>>> master

यह प्रारूप मर्ज-संघर्ष को समझने में आसान बनाता है, अर्थात। इस मामले में स्थानीय रूप से second जोड़ा गया है, जबकि रिमोट को first से last बदल दिया गया है:

last
second

डिफ़ॉल्ट के उपयोग से समान रिज़ॉल्यूशन बहुत कठिन होता:

<<<<<<< HEAD
first
second
=======
last
>>>>>>> master

वर्तमान संस्करण और अंतिम संस्करण के बीच अंतर दिखाएं

git diff HEAD^ HEAD

यह पिछली प्रतिबद्धताओं और वर्तमान प्रतिबद्धताओं के बीच के बदलावों को दिखाएगा।

डिफ यूटीएफ -16 एन्कोडेड टेक्स्ट और बाइनरी प्लिस्ट फाइलें

आप यूटीएफ -16 एन्कोडेड फ़ाइलों (स्थानीयकरण स्ट्रिंग फ़ाइल ओएस ओएस आईओएस और मैकओएस उदाहरण हैं) को निर्दिष्ट करके यह बता सकते हैं कि इन फ़ाइलों को कैसे अलग करना चाहिए।

अपनी ~/.gitconfig फ़ाइल में निम्न जोड़ें।

[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"

iconv विभिन्न एन्कोडिंग को परिवर्तित करने का एक कार्यक्रम है।

फिर रिपोजिटरी के रूट में .gitattributes फ़ाइल को एडिट या क्रिएट करें जहाँ आप इसका उपयोग करना चाहते हैं। या बस ~/.gitattributes संपादित करें ~/.gitattributes

*.strings diff=utf16

जीआईटी .strings होने से पहले .strings में समाप्त होने वाली सभी फ़ाइलों को परिवर्तित कर देगा।

आप अन्य फ़ाइलों के लिए समान कार्य कर सकते हैं, जिसे पाठ में परिवर्तित किया जा सकता है।

द्विआधारी plist फ़ाइलों के लिए आप .gitconfig संपादित .gitconfig

[diff "plist"]
textconv = plutil -convert xml1 -o -

और .gitattributes

*.plist diff=plist

तुलना करने वाली शाखाएँ

new और original की नोक के बीच परिवर्तन दिखाएं:

git diff original new     # equivalent to original..new

original से शाखित होने के बाद new पर सभी परिवर्तन दिखाएं:

git diff original...new     # equivalent to $(git merge-base original new)..new

जैसे केवल एक पैरामीटर का उपयोग करना

मूल भिन्न है

के बराबर है

git का मूल

दो शाखाओं के बीच परिवर्तन दिखाएं

git diff branch1..branch2

पैच-संगत अंतर का उत्पादन करें

कभी-कभी आपको पैच का उपयोग करके आवेदन करने के लिए बस एक अंतर की आवश्यकता होती है। नियमित रूप से git --diff काम नहीं करता है। इसके बजाय यह प्रयास करें:

git diff --no-prefix > some_file.patch

फिर कहीं और आप इसे उल्टा कर सकते हैं:

patch -p0 < some_file.patch

दो प्रतिबद्ध या शाखा के बीच अंतर

दो शाखा के बीच अंतर देखने के लिए

git diff <branch1>..<branch2>

दो शाखा के बीच अंतर देखने के लिए

git diff <commitId1>..<commitId2>

वर्तमान शाखा के साथ अंतर देखने के लिए

git diff <branch/commitId>

परिवर्तनों का सारांश देखने के लिए

git diff --stat <branch/commitId>

फ़ाइलों को देखने के लिए जो एक निश्चित प्रतिबद्ध के बाद बदल गए

git diff --name-only <commitId>

उन फ़ाइलों को देखने के लिए जो एक शाखा से भिन्न हैं

git diff --name-only <branchName>

एक निश्चित प्रतिबद्ध के बाद एक फ़ोल्डर में बदल गई फ़ाइलों को देखने के लिए

git diff --name-only <commitId> <folder_path>


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow