git - मैं किए गए परिवर्तनों को कैसे दिखाऊं?




diff dvcs (9)

एक दृश्य डिफ ​​टूल का उपयोग करना

डिफ़ॉल्ट उत्तर (कमांड लाइन पर)

यहां शीर्ष उत्तरों सही ढंग से दिखाते हैं कि Index में कैश किए गए / चरणबद्ध परिवर्तनों को कैसे देखें:

$ git diff --cached

या $ git diff --staged जो एक उपनाम है।


इसके बजाय विजुअल डिफ टूल लॉन्च करना

डिफ़ॉल्ट उत्तर गिट बैश (यानी कमांड लाइन पर या कंसोल में) में diff परिवर्तनों को थूक देगा। उन लोगों के लिए जो चरणबद्ध फ़ाइल मतभेदों का दृश्य प्रतिनिधित्व पसंद करते हैं, वहां एक ऐसी स्क्रिप्ट उपलब्ध है जो गिट के भीतर उपलब्ध है जो प्रत्येक फ़ाइल के लिए दृश्यमान डिफ टूल लॉन्च करता है, जिसे उन्हें कमांड लाइन पर दिखाने के बजाए देखा जाता है, जिसे difftool कहा जाता है:

$ git difftool --staged

यह git diff --staged के समान ही git diff --staged , किसी भी समय diff उपकरण चलाया जाता है (यानी प्रत्येक बार जब फ़ाइल को diff द्वारा संसाधित किया जाता है), यह डिफ़ॉल्ट दृश्य diff टूल लॉन्च करेगा (मेरे पर्यावरण में, यह kdiff3 है ) ।

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


आप गिट कमांड में diff स्थान पर हमेशा difftool का उपयोग कर सकते हैं

आपके सभी दृश्य diff जरूरतों के लिए, git difftool सभी विकल्पों सहित किसी भी git diff कमांड के स्थान पर काम करेगा।

उदाहरण के लिए, प्रत्येक फ़ाइल के लिए इसे करने के बिना यह पूछे बिना दृश्य diff टूल लॉन्च करने के लिए, -y विकल्प जोड़ें (मुझे लगता है कि आमतौर पर आप इसे चाहते हैं !!):

$ git difftool -y --staged

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

या Index में आयोजित की गई किसी विशेष फ़ाइल के अंतर को देखने के लिए:

$ git difftool -y --staged <<relative path/filename>>

सभी विकल्पों के लिए, मैन पेज देखें:

$ git difftool --help


विजुअल गिट टूल सेट अप करना

डिफ़ॉल्ट के अलावा दृश्य गिट उपकरण का उपयोग करने के लिए, -t <tool> विकल्प का उपयोग करें:

$ git difftool -t <tool> <<other args>>

या, एक अलग डिफ़ॉल्ट दृश्य diff उपकरण का उपयोग करने के लिए गिट को कॉन्फ़िगर करने के लिए difftool मैन पेज देखें।

मैंने कुछ बदलाव किए हैं; मैं अगली प्रतिबद्धता के लिए आयोजित की गई सभी फ़ाइलों का अंतर कैसे देख सकता हूं? मुझे गिट स्थिति की जानकारी है, लेकिन मैं वास्तविक अंतर देखना चाहता हूं - न कि केवल फाइलों के नाम जो मंचित हैं।

मैंने देखा कि git-diff(1) मैन पेज कहता है

गिट diff [--options] [-] [...]

यह फ़ॉर्म इंडेक्स के सापेक्ष किए गए परिवर्तनों को देखने के लिए है (अगली प्रतिबद्धता के लिए स्टेजिंग क्षेत्र)। दूसरे शब्दों में, अंतर यह है कि आप इंडेक्स में आगे बढ़ने के लिए गिट को बता सकते हैं लेकिन आपने अभी भी नहीं किया है। आप गिट-एड (1) का उपयोग करके इन परिवर्तनों को चरणबद्ध कर सकते हैं।

दुर्भाग्य से, मैं इस बारे में काफी समझ नहीं सकता। कुछ आसान एक-लाइनर होना चाहिए जो मैं उपनाम बना सकता हूं, है ना?


आप इस कमांड का उपयोग कर सकते हैं।

git diff --cached --name-only

git diff का --cached विकल्प का मतलब है चरणबद्ध फाइलें प्राप्त करने के लिए, और --name-only विकल्प का मतलब केवल फाइलों के नाम प्राप्त करना है।


गिट के साथ प्रदान किए गए gitk टूल के बारे में भी सोचें और परिवर्तन देखने के लिए बहुत उपयोगी हैं


डिफॉल्ट गिट डिफ का उपयोग उन परिवर्तनों को दिखाने के लिए किया जाता है जो गिट अद्यतन फ़ाइलों की सूची में नहीं जोड़े जाते हैं। लेकिन यदि आप जो बदलाव जोड़ते हैं या छेड़छाड़ करते हैं, तो आपको अतिरिक्त विकल्प प्रदान करने की ज़रूरत है जो गिट को यह बताएंगे कि आप स्टैग या अतिरिक्त फाइलों में रुचि रखते हैं।

$ git diff          # Default Use
$ git diff --cached # Can be used to show difference after adding the files 
$ git diff --staged # Same as 'git diff --cached' mostly used with latest version of git 

उदाहरण

$ git diff 
diff --git a/x/y/z.js  b/x/y/z.js index 98fc22b..0359d84 100644
--- a/x/y/z.js 
+++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {

-        if (a)
+        if (typeof a !== 'undefined')
             res = 1;
         else
             res = 2;

$ git add x/y/z.js
$ git diff
$

एक बार जब आप फ़ाइलों को जोड़ देते हैं, तो आप 'git diff' के डिफ़ॉल्ट का उपयोग नहीं कर सकते हैं। आपको ऐसा करना होगा: -

$ git diff --cached
diff --git a/x/y/z.js  b/x/y/z.js index 98fc22b..0359d84 100644
    --- a/x/y/z.js 
    +++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {

    -        if (a)
    +        if (typeof a !== 'undefined')
                 res = 1;
             else
                 res = 2;

यदि आप एक दृश्य साइड-बाय-साइड व्यू में रूचि रखते हैं, तो diffuse दृश्य diff टूल ऐसा कर सकता है। अगर कुछ बदलाव भी नहीं होते हैं तो यह तीन पैन भी दिखाएगा। विवादों के मामले में, चार पैन भी होंगे।

इसके साथ आमंत्रित करें

diffuse -m

आपके गिट कामकाजी प्रति में।

यदि आप मुझसे पूछते हैं, तो एक दशक के लिए मैंने देखा है कि सबसे अच्छा दृश्य अलग है। इसके अलावा, यह गिट के लिए विशिष्ट नहीं है: यह एसवीएन, मर्कुरियल, बाजार, सहित अन्य वीसीएस के साथ बातचीत करता है ...

यह भी देखें: गिट diff में मंचित और काम कर रहे पेड़ दोनों दिखाओ?


यदि आपके इरादे एक दूरस्थ रिपो शाखा को धक्का-लक्षित करना है और प्रतिबद्ध परिवर्तन लॉग पर आपका पहला पास अधूरा था, तो आप इस तरह धक्का देने से पहले प्रतिबद्ध कथन को सही कर सकते हैं।

स्थानीय स्तर पर

... कुछ बदलाव करें ...

git diff # look at unstaged changes

git commit -am"partial description of changes"

... प्रतिबद्धताओं में unmentioned अधिक परिवर्तन याद ...

गिट diff उत्पत्ति / मास्टर # मंच पर देखो लेकिन परिवर्तन धक्का नहीं

... चरणबद्ध प्रतिबद्धता में संशोधन ...

git commit --amend -m"i missed mentioning these changes ...."

git push

यह सिर्फ होना चाहिए:

git diff --cached

--cached कैश किए गए माध्यम वर्तमान HEAD खिलाफ कैश / इंडेक्स (यानी चरणबद्ध परिवर्तन) में परिवर्तन दिखाते हैं। --staged लिए समानार्थी है।

--staged और - --cached HEAD को इंगित नहीं करता है, केवल HEAD के संबंध में अंतर। यदि आप चेरी चुनते हैं कि git add --patch (या git add -p ) का उपयोग करके क्या करना है, तो --staged हो जाएगा।


संस्करण 1.7 से और बाद में यह होना चाहिए:

git diff --staged

git gui और git-cola ग्राफिकल यूटिलिटीज हैं जो आपको इंडेक्स को देखने और कुशल बनाने में मदद करते हैं। दोनों में स्टेज्ड फाइलों के लिए सरल दृश्य अंतर शामिल हैं, और git-cola एक अधिक परिष्कृत साइड-बाय-साइड विज़ुअल डिफ टूल भी लॉन्च कर सकता है।

गिट में इंडेक्स से फ़ाइल को कैसे निकालें इस पर मेरा बारीकी से संबंधित उत्तर देखें ? , और यह गिट - जीयूआई ग्राहकों की यह आधिकारिक सूची भी है।








git-stage