2013-07-16 12 views
102

के बीच अंतर कैसे करें मान लें कि मैंने एक भंडार क्लोन किया है और फ़ाइलों को संशोधित करना शुरू कर दिया है। मुझे पता है कि अगर मेरे पास स्थानीय असामान्य परिवर्तन हैं, तो मैं git diff test.txt के रूप में एक अंतर कर सकता हूं और यह मुझे वर्तमान स्थानीय HEAD और फ़ाइल में संशोधित, असामान्य परिवर्तनों के बीच अंतर दिखाएगा। अगर मैं उन परिवर्तनों git diff master origin/masterस्थानीय असामान्य परिवर्तनों और मूल

का उपयोग करके मैं मूल भंडार के खिलाफ यह diff कर सकते हैं प्रतिबद्ध लेकिन वहाँ सर्वर पर मूल भंडार से पहले स्थानीय स्तर पर करने के साथ स्थानीय परिवर्तन diff'ing की किसी भी तरह से है? मैंने बिना किसी किस्मत के git diff --cached master origin/master के विभिन्न क्रमपरिवर्तनों की कोशिश की।

+0

मुझे पता है कितना मेरी फाइल अपने स्थानीय पर पिछले प्रतिबद्ध संस्करण से बदल गया है चाहता था। मेरे प्रश्न का उत्तर यह सवाल था। धन्यवाद! –

उत्तर

98

यह देखते हुए कि रिमोट रिपोजिटरी को git fetch के माध्यम से कैश किया गया है, इन कार्यों के मुकाबले तुलना करना संभव होना चाहिए। निम्नलिखित का प्रयास करें:

$ git fetch origin 
$ git diff origin/master 
+4

आह, उत्कृष्ट। कुंजी मास्टर बाहर छोड़ना था। मैंने एक संयोजन की कोशिश की थी जहां मैं पहले एक fetch कर रहा था, लेकिन जब मैंने 'git diff मास्टर मूल/मास्टर' किया था, तब भी यह प्रतिबद्ध संस्करण (पूर्वदर्शी में स्पष्ट) के खिलाफ तुलना कर रहा था। लेकिन मास्टर को छोड़कर अब प्राप्त संस्करण के खिलाफ स्थानीय परिवर्तनों की तुलना करता है। – Chaitanya

+0

@ चैतन्य अच्छा मैं मदद कर सकता था। असल में मुझे विभिन्न शैलियों का पता चलता है गिट थोड़ा परेशान करता है: एक बार आपको 'मूल मास्टर' और कहीं और 'मूल/मास्टर' लिखना होगा। आईएमएचओ करने के लिए अभी भी काम है। – JJD

+0

यह काम नहीं कर रहा है: 'गिट diff उत्पत्ति/मास्टर' रिटर्न 'घातक: संदिग्ध तर्क' मूल/मास्टर ': अज्ञात संशोधन या पथ काम करने वाले पेड़ में नहीं है।' मास्टर मूल पर मौजूद है, उदाहरण के लिए 'गिट फ़ेच मूल मास्टर 'ठीक काम करता है, – mikemaccana

27

मैं जानता हूँ कि यह पूछा सटीक प्रश्न का उत्तर नहीं है, लेकिन मैं इस सवाल का एक शाखा में एक फ़ाइल और एक स्थानीय अप्रतिबद्ध फ़ाइल अन्तर करने के लिए देख पाया और मुझे लगता है मैं

साझा करेंगे लगा

सिंटेक्स:

git diff <commit-ish>:./ -- <path> 

उदाहरण:

git diff origin/master:./ -- README.md 
git diff HEAD^:./ -- README.md 
git diff [email protected]{0}:./ -- README.md 
git diff 1A2B3C4D:./ -- README.md 

(धन्यवाद एरिक Boehs एक तरह से दो बार फ़ाइल नाम लिखने की आवश्यकता नहीं करने के लिए) का उपयोग कर सकते

+0

मुझे सामान्य समाधान को संकीर्ण, विशिष्ट ऊपर से बेहतर पसंद है।मन साझा करना जहां आपको वह मिला? – fbicknel

+0

मुझे 'प्रतिबद्ध-आईएसएच' और कोलन विभाजक के विवरण पर प्रलेखन नहीं मिल रहा है। [Git-diff] पर दस्तावेज़ [http://git-scm.com/docs/git-diff) इसका उल्लेख नहीं करते हैं। मैंने इसे इतने लंबे समय तक इस्तेमाल किया है कि मुझे याद नहीं है कि मुझे पहले यह कहां मिला। शायद अन्य आदेशों पर अन्य लोगों के उदाहरण और मैंने अभी 'गिट-डिफ' के साथ प्रयोग किया है। मुझे डर है ['प्रतिबद्ध-आश' पर एक और जवाब] (http://stackoverflow.com/a/23303550/761771) इस समय मैं सबसे अच्छा आ सकता हूं। – Nate

+1

इस के लिए एक अच्छा जोड़ा 'गिट diff मास्टर है: ./ - README.md'। इस तरह आपको दो बार 'README.md' टाइप करने की आवश्यकता नहीं है और आप इसे उपनाम में जोड़ सकते हैं। –

5

आप फ़ाइलों नेत्रहीन तुलना करने के लिए करना चाहते हैं:

git difftool 

यह प्रत्येक परिवर्तित फ़ाइल के लिए स्वचालित रूप से आपके diff एप्लिकेशन शुरू कर देंगे ।

पुनश्च: (मैं Winmerge का उपयोग करें) आप एक diff एप्लिकेशन सेट नहीं किया है, तो आप इसे नीचे दिए गए उदाहरण में की तरह कर सकते हैं:

git config --global merge.tool winmerge 
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"" 
git config --global mergetool.prompt false 
+0

क्या यह परिवर्तन तुरंत प्रभावी हो जाता है? –

+0

मैं सिर्फ उत्सुक हूं, इस सवाल से संबंधित कैसे पूछा जाता है? Difftool गिट नहीं होगा बस मास्टर के साथ स्थानीय परिवर्तन की तुलना करें? हालांकि, ओपी स्थानीय परिवर्तनों और रिमोट मास्टर के बीच चाहता है। – infoclogged

15

गैर मंचन (गैर जोड़ा) में परिवर्तन देखने के लिए मौजूदा फ़ाइलों

git diff

ध्यान दें कि यह नई फ़ाइलों को ट्रैक नहीं करता। मंचन को देखने के लिए, गैर प्रतिबद्ध परिवर्तन

git diff --cached

संबंधित मुद्दे