खोज…
वाक्य - विन्यास
-
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 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>