git की एक ही शाखा पर दो फाइलें अलग-अलग होती हैं


97

खेद है कि अगर यह सवाल मौजूद है, तो मैं आश्चर्यजनक रूप से इसे नहीं पा सका: /

मैं एक git diffही शाखा और एक ही प्रतिबद्ध के भीतर दो फ़ाइलों के बीच कैसे प्रदर्शन कर सकता हूं ?

अर्थात git diff fileA.php fileB.php

(आदर्श रूप से रंग कोडिंग पढ़ने के लिए आसान है जो gitप्रदान करता है .... या इसी तरह के कार्यक्रम BeyondCompare करता है!)


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

जवाबों:


84

आपको इसके लिए git की जरूरत नहीं है, बस उपयोग करें diff fileA.php fileB.php(या यदि आप साइड तुलना द्वारा चाहते हैं तो vimdiff)


22
vimdiffजीत के लिए! धन्यवाद!
d -_- b

24
यह काम कर सकता है, लेकिन यह अंतर नहीं है। यह पूरी तरह से अलग आउटपुट स्वरूप है।
डबोरॉस

11
यह मूल प्रश्न का उत्तर नहीं देता है
DylanYoung

8
मैं असहमत हूं, ओपी स्पष्ट नहीं था लेकिन इस तथ्य का उल्लेख है कि वह बियॉन्डकॉम से तात्पर्य है कि वह विशेष रूप से नहीं देख रहा है git diffलेकिन बस पढ़ने में आसान है। इस तथ्य को भी उन्होंने मेरे उत्तर के रूप में स्वीकार कर लिया कि वह जो देख रहे थे वह यह दर्शाता है कि यह वास्तव में इसका उत्तर देता है।
JaredMcAteer

3
उत्तर को बारीकी से पढ़ें। कमांड diff fileA fileBनहीं हैgit diff fileA fileB
मैथ्यू हिना

247

यदि आप git diffदो मनमानी फ़ाइलों पर उपयोग करना चाहते हैं तो आप उपयोग कर सकते हैं git diff --no-index <file_a> <file_b>। काम करने के लिए दो फाइलों को ट्रैक करने की आवश्यकता नहीं है git


32
+1 के रूप में यह इनबिल्ट सवाल का जवाब देता है ("आप ऐसा क्यों करेंगे" की परवाह किए बिना ... कारण हो सकते हैं)
नोबोडिस नाइटमेयर

19
--word-diffशब्द द्वारा हाइलाइट्स, न केवल लाइन
user3148949

2
PowerShell का उपयोग करने वाले लोगों के लिए, रेपो में दो फ़ाइलों के अंतर को प्राप्त करने का यह एक आसान तरीका है।
जय सोयेर

2
2 से पहले सूचीबद्ध यह उत्कृष्ट उत्तर कैसे है, "सक्रिय" द्वारा छँटाई करने पर कम-वोट वाले (और कम उपयोगी) उत्तर ??? मैं भी सही के रूप में चिह्नित उत्तर की गिनती नहीं कर रहा हूँ। कोई बात नहीं धन्यवाद!
j_random_hacker 21

GNU डिफ्यूटल में @ डबोरोस 3.4+ (2016-08-08), diff है --color, जो मदद कर सकता है (देखें unix.stackexchange.com/a/338960 )। लेकिन फिर भी, यदि उपयोग किया जाता है diff-so-fancy, तो इसके लिए विशिष्ट आउटपुट प्रारूप की आवश्यकता होती है git diffdiff -u(देखें stackoverflow.com/a/4857407/10095231 ) काम नहीं करता है।
केल्विन

14

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

git diff <revision_1>:<file_1> <revision_2>:<file_2>

जैसा कि यहां दिया गया है: https://stackoverflow.com/a/3343506/1815446

आपके मामले में (दोनों फ़ाइलों के लिए एक ही संशोधन निर्दिष्ट करते हुए):

git diff <revisionX>:fileA.php <revisionX>:fileB.php

नोट: एक संशोधन हो सकता है HEAD~2, एक SHA-1, एक शाखा का नाम, आदि
ma11hew28

यह मेरे लिए काम किया, बस दो अलग-अलग निर्देशिकाओं से फ़ाइल नामों की तुलना करना: दोनों निर्देशिकाओं के git diff --name-only HEAD:dir1 HEAD:dir1_backup बाद काम करता है git add
फ्रैंक फोर्ट

1
यह तब काम करता है जब संशोधन को कार्यशील पेड़ में चेक आउट नहीं किया जाता है, या कार्यशील ट्री फ़ाइलों को संशोधित किया जाता है और मूल को अलग करने की इच्छा होती है, या यदि कोई कार्यशील पेड़ नहीं है, जैसा कि एक नंगे गिट रेपो में है। यह दुर्भाग्यपूर्ण है कि इस अत्यधिक मूल्यांकन किए गए प्रश्न के अत्यधिक मूल्यांकन किए गए उत्तर हैं जो अभी भी उपयोगी हैं, फिर भी काफी अलग हैं, सवाल है, "मैं बिना गिट के उपयोग के उत्पादन की तरह जीआईटी-भिन्न कैसे प्राप्त कर सकता हूं?"
ट्रेंटप

4

नियमित रूप से gnu को अलग बनाने के लिए git diff की तरह देखें, मैं इन मापदंडों की सिफारिश करूंगा:

diff -burN file_or_dir1 file_or_dir2

(जहां -bरिक्त स्थान को अनदेखा करते हैं, -uएकीकृत अंतर, -rपुनरावर्ती, -Nलापता फ़ाइलों का इलाज करें /dev/null)।

यह शानदार काम करता है, लेकिन फिर भी इसमें रंग नहीं होते हैं और गिट-स्टाइल ऑटो-पेजिंग वस्तुतः अनुपस्थित है। यदि आप दोनों (मैं करते हैं) को ठीक करना चाहते हैं, तो colordiffइसे इस तरह स्थापित और उपयोग करें:

colordiff -burN file_or_dir1 file_or_dir2 | less -R

यह आउटपुट और इंटरफ़ेस देता है जो वास्तविक के बहुत करीब है git diff


4
-1 क्योंकि "आप नहीं कर सकते" गलत है (देखें: stackoverflow.com/a/13965200/968531 )
नोबोडिस नाइटमेयर

"आप नहीं कर सकते हैं" को हटा दें, कोऑर्डिफ़ को स्थापित करने के लिए निर्देश जोड़ें और यह मूल प्रश्न का एक ठीक जवाब हो सकता है।
DylanYoung


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