2012-08-01 13 views
6

मैं अपनी कोड समीक्षा करने के लिए कमांड लाइन गिट और Kaleidoscope का उपयोग कर रहा हूं। जब मैं दूसरे में एक शाखा विलय और टाइपमेरे गिट-एकीकृत कैलिडोस्कोप को सभी फाइलों को प्रदर्शित करने के लिए कैसे प्राप्त करें?

git difftool 

बहुरूपदर्शक केवल परिवर्तन कर रहे हैं कि 'प्रतिबद्ध के लिए मंचन नहीं' और 'मर्ज ना किए गए रास्तों' प्रदर्शित नहीं करते या 'के लिए प्रतिबद्ध होना करने के लिए बदल' प्रदर्शित करता है।

कमांड लाइन शेष सामान प्रदर्शित करती है।

कोई विचार क्यों?

यह मेरा ~/.gitconfig

[user] 
     name = Dirty Henry 
     email = [email protected] 
[core] 
     excludesfile = /Users/dirty/.gitignore_global 
     editor = mate 
[difftool "Kaleidoscope"] 
     cmd = ksdiff-wrapper git \"$LOCAL\" \"$REMOTE\" 
[mergetool "sourcetree"] 
     cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" 
     trustExitCode = true 
[diff] 
     tool = Kaleidoscope 
[credential] 
     helper = osxkeychain 
[difftool] 
     prompt = false 

उत्तर

14

लघु जवाब: क्या आप कमांड लाइन पर टाइप करना चाहते हैं git difftool HEAD, नहीं git difftool है।

लंबा उत्तर: यह सामान्य गिट व्यवहार है, और अगर आपको यह नहीं पता कि क्या हो रहा है तो यह निराशाजनक है। मुझे यकीन है कि क्यों कमांड लाइन diff आपकी अपेक्षा के अनुरूप काम कर रहा है, लेकिन दोनों git diff और git difftool प्रति Git आदमी पृष्ठ के रूप में एक जैसा प्रदर्शन किया जाना चाहिए नहीं कर रहा हूँ:

Git diff [--options] [-] [< पथ > ...] यह फ़ॉर्म इंडेक्स के सापेक्ष किए गए परिवर्तनों को देखने के लिए है (अगली प्रतिबद्धता के लिए चरणबद्ध क्षेत्र)। दूसरे शब्दों में, मतभेद हैं जो आप इंडेक्स में आगे जोड़ने के लिए गिट बता सकते हैं लेकिन आपने अभी भी नहीं किया है। आप git-add (1) का उपयोग कर इन परिवर्तनों को चरणबद्ध कर सकते हैं।

तो git diff और git difftool आप केवल unstaged परिवर्तन दिखाना चाहिए।

आप परिवर्तन का मंचन को देखने के लिए चाहते हैं, आप git diff --cached का उपयोग करना चाहिए और इसके बजाय git difftool --cached:

Git diff [--options] --cached [< प्रतिबद्ध >] [-] [< पथ > ...] यह फ़ॉर्म नाम < > नामित अगली प्रतिबद्धता के लिए आपके द्वारा किए गए परिवर्तनों को देखने के लिए है। आम तौर पर आप नवीनतम प्रतिबद्धता की तुलना करना चाहते हैं, इसलिए यदि आप < > नहीं देते हैं, तो यह HEAD पर डिफ़ॉल्ट होता है। यदि HEAD मौजूद नहीं है (उदा। अज्ञात शाखाएं) और < > प्रतिबद्ध नहीं है, तो यह सभी चरणबद्ध परिवर्तन दिखाता है। --स्टेड - कैश्ड का समानार्थी है।

अंत में, दोनों का मंचन अगर आप देखना चाहते हैं और unstaged परिवर्तन, आप तीसरे फार्म का उपयोग करें, git diff HEAD या git difftool HEAD:

Git diff [--options] < प्रतिबद्ध > [- ] [< पथ > ...] यह फॉर्म नामित < > पर हस्ताक्षर किए गए आपके कार्यक्षेत्र में हुए परिवर्तनों को देखने के लिए है। आप एक अलग शाखा की नोक के साथ तुलना करने के लिए नवीनतम प्रतिबद्धता, या शाखा नाम की तुलना करने के लिए हेड का उपयोग कर सकते हैं।

+0

भयानक। धन्यवाद! –

1
git difftool --staged 

आपको ठीक उसी देंगे।

staged इस मामले में cached का पर्याय है, हालांकि मुझे staged याद रखना आसान लगता है।

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