वर्तमान स्थिति और अंतिम प्रतिबद्ध के बीच अंतर देखें


92

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

जवाबों:


113

यदि आपने अभी तक (साथ git add) सूचकांक में कोई फ़ाइल नहीं जोड़ी है , तो बस करें

git diff

यह आपके वर्किंग ट्री और इंडेक्स के बीच के अंतर को दिखाएगा।

यदि आपने अनुक्रमणिका में फ़ाइलें जोड़ी हैं, तो आपको अनुक्रमणिका और अंतिम प्रतिबद्ध (HEAD) के बीच अंतर दिखाने के लिए ऐसा करने की आवश्यकता है।

git diff --cached

अंत में, यदि आप नवीनतम प्रतिबद्ध ( HEAD) के अनुसार काम करने वाले पेड़ में किए गए परिवर्तनों को देखना चाहते हैं (जैसा कि कार्लोस बताते हैं)

git diff HEAD

उन परिवर्तनों के संयोजन कर रहे हैं git diffऔर git diff --cached


2
git diffइंडेक्स के खिलाफ वर्कट्री की तुलना करता है, हेड की नहीं।
कार्लोस मार्टीन नीटो

@ CarlosMartínNieto आप सही हैं, सर। मैंने इसे दर्शाने के लिए अपनी पोस्ट में सुधार किया है।
क्लास मेलबर्न

मैं उसे चलाता हूं, लेकिन टर्मिनल समाप्त नहीं होता है, मैं कैसे बाहर निकल सकता हूं? कुछ भी काम नहीं करता है।
फ्रांसिस्को कोरलस मोरालेस

@KlasMellbourn, क्या यह git diffएक अलग संदेश में सूचकांक की स्थिति और पिछली प्रतिबद्धता के लिए संभव है ?
अल्फा_989

2
अच्छी तरह से यह पता चला git diff --cached HEAD^:) :)
अल्फा_989

33

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

git diff HEAD^

यह HEAD की तुलना कमिट से तुरंत पहले कर देगा। एक भी कर सकता था

git diff HEAD^^

प्ले 2 की स्थिति की तुलना पहले से करता है। वर्तमान स्थिति और एक निश्चित प्रतिबद्धता के बीच अंतर देखने के लिए, बस करें:

git diff b6af6qc

जहाँ b6af6qcएक प्रतिबद्ध हैश का एक उदाहरण है।


3
गिट के विंडोज सीएमडी संस्करण के लिए एक हेड-अप - आपको कैरेट के साथ कैरेट (^) चरित्र से बचना होगा। इसलिए, "git diff HEAD ^" होगा "git diff HEAD ^^"। उसी तरह, "हेड ^ ^" का इनपुट "हेड ^ ^ ^ ^" के रूप में होगा।
ईलर

1
इस उत्तर में मुझे लगता है कि यह थोड़ा अस्पष्ट है कि "अंतिम प्रतिबद्ध" क्या संदर्भित करता है। HEAD^प्रतिबद्ध है इससे पहले कि नवीनतम प्रतिबद्ध।
क्लस मेलबर्न

3

आप git को वर्तमान / अंतिम कमिट को अलग करने के लिए कहते हैं, जिसका शॉर्टहैंड है HEAD

तो git diff HEADवर्तमान प्रतिबद्ध के साथ कार्यस्थल की वर्तमान स्थिति की तुलना करेगा।


3

यह भी अंतर दिखाता है और क्या फ़ाइलों को परिवर्तित / संशोधित किया गया है।

$ git status 

उन रास्तों को प्रदर्शित करता है जिनमें सूचकांक फ़ाइल और वर्तमान HEAD प्रतिबद्धताओं के बीच अंतर होता है, ऐसे रास्ते जिनमें कार्यशील पेड़ और सूचकांक फ़ाइल के बीच अंतर होता है, और काम करने वाले पेड़ में पथ जो गिट द्वारा ट्रैक नहीं होते हैं (और gitoreore द्वारा अनदेखा नहीं किया जाता है )। पहली वे हैं जो आप जीआईटी कमिटमेंट चलाकर करेंगे; दूसरा और तीसरा वह है जो आप जीआईटी कमिटमेंट चलाने से पहले git add चलाकर कर सकते हैं।

https://www.kernel.org/pub/software/scm/git/docs/git-status.html


2

यह मेरे लिए भी काम करता है:

# The last one
git diff HEAD~1 HEAD

# The last but one, etc...
git diff HEAD~2 HEAD~1

यह आमतौर पर एक रैखिक इतिहास के लिए काम करता है। यह और अधिक मुश्किल हो सकता है अगर मर्ज कमिट भी हों। मैं आपको एक अच्छे और पूर्ण विवरण के लिए इस डॉक्टर में देखने की सलाह देता हूं, विशेष रूप से उस वृक्ष चित्रण उदाहरण के लिए:

https://git-scm.com/docs/gitrevisions

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.