git दो भिन्न फ़ाइलों के बीच भिन्न होता है


110

में HEAD(नवीनतम कमिट), मेरे पास एक फ़ाइल है जिसका नाम है foo। अपने वर्तमान कार्यशील वृक्ष में, मैंने इसका नाम बदलकर इसे barसंपादित भी कर दिया।

मैं अपने वर्तमान कार्यशील वृक्ष git diff fooमें HEAD, और barमें चाहता हूँ ।


64
मुझे लगा कि यह सवाल (शीर्षक से) दो फाइलों पर गिट डिफरेंस का उपयोग करने के बारे में हो सकता है जो जरूरी नहीं कि रेपो में हों। मैंने पाया कि - कोई-इंडेक्स फ़्लैग उसके लिए नहीं है, उदाहरण के लिए git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff हाइलाइट्स शब्द द्वारा परिवर्तन, न कि सिर्फ लाइन, जो लंबे पाठ के लिए सुपर सहायक है)।
पैट

जवाबों:


135

स्पष्ट रूप से पथ निर्दिष्ट करें:

git diff HEAD:full/path/to/foo full/path/to/bar

डॉक्स--find-renames में विकल्प देखें ।git-diff

क्रेडिट: twaggs


9
मैं उल्लेख करना चाहता हूं, कि आप किसी भी दो फाइलों की तुलना कर सकते हैं, git diff <path> <path>भले ही वे एक गिट रिपॉजिटरी में न हों।
मितेनका 15

1
@mitenka मुझे नहीं लगता कि यह सही है। यदि आप देखते हैं तो आप git diff --helpदेखेंगे कि केवल पैटर्न जो दो फ़ाइलों के लिए समर्थित हैं git diff [<options>] --no-index [--] <path> <path>git diff a bकेवल प्रतिमानों का मिलान होता है, फाइलों का नहीं।
डग

@Doug यहाँ आपके द्वारा बताए गए git-scm.com/docs/git-diff : हेल्प कमांड के उद्धरण है, [...] डिस्क पर दो फ़ाइलों के बीच परिवर्तन।
मितेनका

@mitenka मदद कहती है, जब तक आप '--no-index' का उपयोग नहीं करते हैं, यह फाइलों की तुलना नहीं करता है; आपकी टिप्पणी एक अलग उत्तर होनी चाहिए; यह सच नहीं है और यह इस उत्तर के लिए प्रासंगिक नहीं है।
डग

1
@Doug आपकी राय के लिए धन्यवाद। आपके संदर्भ में मदद से बोली यहां दी गई है: आप --no-indexविकल्प को छोड़ सकते हैं जब Git द्वारा नियंत्रित वर्किंग ट्री में कमांड चला रहे हों और वर्किंग ट्री के बाहर कम से कम एक पाथ पॉइंट्स हों, या Git द्वारा नियंत्रित वर्किंग ट्री के बाहर कमांड चला रहे हों। ।
मितेनका

77

मेरा मानना --no-indexहै कि आप जिस चीज की तलाश कर रहे हैं, उसका उपयोग करें

git diff [<options>] --no-index [--] <path> <path>

जैसा कि गिट मैनुअल में उल्लिखित है:

यह फॉर्म फाइलसिस्टम पर दिए गए दो रास्तों की तुलना करना है। आप कर सकते हैं छोड़ देते हैं--no-index जब एक काम कर पेड़ Git द्वारा और नियंत्रित में आदेश चलाकर विकल्प कम से कम बाहर रास्तों बिंदुओं में से एक काम कर पेड़, या जब बाहर आदेश चलाकर एक काम पेड़ Git द्वारा नियंत्रित।


1
@ यह निश्चित रूप से एक उपयोगी उत्तर है, लेकिन ओपी ने विशेष रूप से कहा कि फ़ाइल HEAD में है, जिसका अर्थ है कि यह एक git इंडेक्स में है। स्वीकृत उत्तर सीधे प्रश्न को संबोधित करता है। इसके अलावा स्वीकृत जवाब में 6 साल की शुरुआत थी;)
माइकल डेलगाडो

3
इसने ओपी की मदद नहीं की होगी, लेकिन यह वही था जिसकी मुझे तलाश थी।
दृष्टिकोण

यह शीर्षक द्वारा पोस्ट किए गए प्रश्न का उत्तर देता है, अगर आप वेब पर इसके लिए डक कर रहे थे।
मर्लिन

3

यदि आप tortoise git का उपयोग कर रहे हैं, तो आप किसी फ़ाइल पर राइट-क्लिक कर सकते हैं और इसके द्वारा एक भिन्नता प्रदान कर सकते हैं: पहली फ़ाइल पर राइट-क्लिक करके और tortoisegit submenu के माध्यम से "डिफ बाद में" चुनें। फिर दूसरी फ़ाइल पर आप राइट-क्लिक भी कर सकते हैं , tortoisegit submenu पर जाएं और फिर "Diff with yourfilenamehere.txt" चुनें


-12

PhpStorm का उपयोग करते हुए, मैं सिर्फ प्रचलित प्रतिबद्ध कोड की प्रतिलिपि बनाता हूं और "क्लिपबोर्ड के साथ तुलना" टूल में निर्मित वर्तमान संस्करण के साथ इसकी तुलना करता हूं।


5
PhpStorm एक वाणिज्यिक IDE है। यह सवाल यह है कि गिट क्ली के भीतर यह कैसे करना है, अतिरिक्त सॉफ़्टवेयर का कोई अनुमान नहीं है।
चार्ल्स टेलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.