जवाबों:
तुम कर सकते हो:
git diff master~20:pom.xml pom.xml
... अपने वर्तमान की तुलना पहले माता-पिता के माध्यम pom.xml
से master
20 संशोधनों से एक से करें । आप master~20
निश्चित रूप से, किसी संशोधन के ऑब्जेक्ट नाम (SHA1sum) के साथ या किसी अन्य संशोधन के कई अन्य तरीकों से बदल सकते हैं ।
ध्यान दें कि यह वास्तव में पुराने की तुलना pom.xml
आपके वर्किंग ट्री में संस्करण से कर रहा है, न कि संस्करण में प्रतिबद्ध master
। यदि आप ऐसा चाहते हैं, तो आप इसके बजाय निम्नलिखित कर सकते हैं:
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
उदाहरण के लिए:
git diff b0d14a4 foobar.txt
यदि आप किसी एकल फ़ाइल की अंतिम प्रतिबद्धताओं के बीच अंतर देखना चाहते हैं, तो आप कर सकते हैं:
git log -p -1 filename
यह आपको git में फ़ाइल का रूप देगा, आपकी स्थानीय फ़ाइल की तुलना नहीं कर रहा है।
-1
जब तक आप बदलाव नहीं लेते तब तक आप कदम से कदम बढ़ा सकते हैं।
gitlog () { git log -${3:-p} -${2:-1} $1; }
की तरह उपयोग किया: gitlog Rakefile
या gitlog Rakefile 5
और gitlog Rakefile 10 s
। पहले एक अंतर दिखाता है; दूसरा पांच भिन्न दिखाता है; तीसरा दस दिखाता है --no-patch
।
यह देखने के लिए कि पिछली कमिट में फ़ाइल में क्या बदला गया था:
git diff HEAD~1 path/to/file.
आप उस नंबर (~ 1) को n-वें कमेट में बदल सकते हैं जिसके साथ आप अंतर करना चाहते हैं।
HEAD~1
के लिए प्रतिस्थापित किया गया है <revision>
, जो इस सवाल का जवाब कोई डुप्लिकेट बनाता है।
सामान्य वाक्य रचना:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
आपके रेपो में कहीं भी "FileName.xml" नाम की सभी फाइलों के लिए।
"-" और "**" के बीच का स्थान देखें
अपने प्रश्न का उत्तर दें:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
हमेशा की तरह, आप कमिट करने के लिए एक टैग / sha1 / "HEAD ^" का उपयोग कर सकते हैं।
Ubuntu पर git 1.9.1 के साथ परीक्षण किया गया।
अगर न तो कमिटेड आपका HEAD है तो बैश का ब्रेस विस्तार वास्तव में उपयोगी साबित होता है, खासकर यदि आपके फ़ाइलनाम लंबे हैं, उदाहरण के लिए:
git diff master~20:pom.xml master:pom.xml
बन जाएगा
git diff {master~20,master}:pom.xml
बैश के साथ ब्रेस विस्तार पर अधिक ।
git diff -w HEAD मूल / मास्टर पथ / टू / फ़ाइल
यदि आप एक ग्राफिकल टूल का उपयोग करके ठीक हैं (या इसे पसंद भी कर सकते हैं):
gitk pom.xml
Gitk में आप पॉपअप मेनू में किसी भी कमिट ("इसे" सेलेक्ट "" पर क्लिक कर सकते हैं और "डिफ दिस -> सिलेक्टेड" या "डिफाइंड सिलेक्टेड -> दिस") को सेलेक्ट करने के लिए किसी भी अन्य कमेंट पर क्लिक करें।
GitHub से ऐसा करने के इच्छुक लोगों के लिए, समय के साथ तुलना करना देखें ।
यदि आपको उदाहरण के लिए स्टैश में किसी एकल फ़ाइल में अंतर करने की आवश्यकता है तो आप कर सकते हैं
git diff stash@{0} -- path/to/file
यदि आप किसी विशिष्ट कमिट पर फ़र्क की तलाश कर रहे हैं और आप कमांड लाइन के बजाय github UI का उपयोग करना चाहते हैं (कहते हैं कि आप इसे अन्य लोगों से जोड़ना चाहते हैं), आप कर सकते हैं:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
उदाहरण के लिए:
शीर्ष दाईं ओर दिए गए पिछले और अगले लिंक पर ध्यान दें जो आपको प्रतिबद्ध सभी फाइलों के माध्यम से नेविगेट करने की अनुमति देता है।
यह केवल एक विशिष्ट प्रतिबद्ध के लिए काम करता है, किसी भी दो मनमाने संस्करणों के बीच तुलना करने के लिए नहीं।
git diff <revision>:foo/ HEAD:foo/
।