2010-08-27 20 views
68

मुझे लगता है कि यह कहीं कॉन्फ़िगरेशन त्रुटि है, लेकिन मैं कहां से पता नहीं लगा सकता। नियमित गिट कमांड ठीक काम करने लगते हैं, लेकिन "गिट diff" कुछ भी नहीं करता है। सुरक्षित होने के लिए, मैंने अपने .gitconfig फ़ाइल से बाहरी diff टूल्स हटा दिए। यह मैकपॉर्ट्स के माध्यम से स्थापित किया गया था और लेट्स संस्करण (1.7.2.2) है।"गिट diff" कुछ भी नहीं करता

मुझे क्या लगता है कि जब मैं अपने कार्यक्षेत्र से "गिट diff" चलाता हूं, तो यह कुछ भी नहीं कर रहा है।

$ git --version 
git version 1.7.2.2 
$ git diff 
$ 

अगर मैं वापस एक निर्देशिका ऊपर, मेरे जड़ कार्यक्षेत्र से बाहर है, टाइपिंग "Git diff" मुझे देता है यह:

$ git diff 
usage: git diff [--no-index] <path> <path> 

यह उम्मीद की जा सकती व्यवहार के बाद से मैं एक Git भंडार के तहत नहीं कर रहा हूँ ।

इस पर कोई समस्या नहीं है कि मैं इसका निवारण करने के लिए क्या कर सकता हूं?

+0

आपको क्या लगता है वहाँ समस्या निवारण के लिए कुछ भी नहीं है बनाता है? आपने क्या देखने की उम्मीद की? –

+0

नोट: 'git diff' * * repo * का उपयोग करते समय त्रुटि संदेश जल्द ही स्पष्ट हो जाएगा। [नीचे मेरा जवाब] देखें (http://stackoverflow.com/a/18895460/6309) – VonC

+0

ध्यान दें कि यदि आप दो कामों के बीच एक विशिष्ट फ़ाइल को अलग करने की कोशिश कर रहे हैं और कोई आउटपुट नहीं देखते हैं, तो सुनिश्चित करें कि पथ में आवरण सही है फ़ाइल में। –

उत्तर

91

git diff के लिए डिफ़ॉल्ट आउटपुट उन परिवर्तनों की सूची है जो इंडेक्स में किए गए/जोड़े गए नहीं हैं। यदि कोई बदलाव नहीं है, तो कोई आउटपुट नहीं है।

Git diff [--options] [-] [...]

यह फार्म परिवर्तन आप सूचकांक के सापेक्ष बनाया (अगले प्रतिबद्ध के लिए मचान क्षेत्र) को देखने के लिए है। दूसरे शब्दों में, अंतर यह है कि आप इंडेक्स में आगे जोड़ने के लिए गिट बता सकते हैं लेकिन आपने अभी भी नहीं किया है।

अधिक जानकारी के लिए documentation देखें। विशेष रूप से, उदाहरण के लिए नीचे स्क्रॉल, और इस खंड पढ़ें:

$ git diff   # (1) 
$ git diff --cached # (2) 
$ git diff HEAD  # (3) 
  1. Diff सूचकांक
  2. Diff सिर के साथ सूचकांक के साथ काम कर रहे प्रतिलिपि
  3. Diff प्रमुख के साथ काम करने की नकल

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

+9

मुझे यकीन नहीं है कि आपका उत्तर सही है, लेकिन इससे मुझे जवाब खोजने में मदद मिली, इसलिए धन्यवाद और मैं इसे इस तरह चिह्नित करूंगा! गिट diff के लिए डिफ़ॉल्ट आउटपुट * असाइन किए गए परिवर्तनों की सूची नहीं है, यह असामान्य परिवर्तनों की सूची है जो _also_ "अभी तक अगली प्रतिबद्धता के लिए चरणबद्ध नहीं हैं"। तो, आदेश जो मैं "गिट diff" करने की उम्मीद कर रहा था वास्तव में "गिट diff HEAD" है। –

+2

तस्वीर को पूरा करने के लिए, इंडेक्स में क्या दिखाना है, यह दिखाने के लिए गिट diff --cached का उपयोग करें। – Douglas

+0

गिट diff करता है: (अनुक्रमणिका) - (काम कर निर्देशिका) या आसपास के अन्य तरीके: (काम कर निर्देशिका) - (सूचकांक)? – BKSpurgeon

2

यदि आपकी कार्य निर्देशिका साफ़ है और अंतिम अद्यतन से कोई अंतर नहीं है तो यह कुछ भी नहीं करता है। फ़ाइल को संपादित करने का प्रयास करें और फिर गिट डिफ फिर से चलाएं, और फिर इसे diff दिखाएं।

1

यदि आप इसे वास्तविक भंडार या कार्य-प्रतिलिपि के बाहर उपयोग कर रहे हैं, तो इसका व्यवहार जीएनयू diff के समान है। तो आपको तुलना करने के लिए 2 निर्देशिकाओं या फ़ाइलों को सूचित करने की आवश्यकता है। उदाहरण:

git diff old_dir new_dir

यदि उनके बीच कोई अंतर है, तो आउटपुट आपको अपेक्षित दिखाएगा।

4

नोट: starting git 1.8.5 or 1.9, Q4 2013:

जब उपयोगकर्ता प्रकार "git diff" एक काम कर पेड़ बाहर , यह सोच कर वह एक के अंदर, एक एकल लाइनर है कि वर्तमान त्रुटि संदेश है:

usage: git diff --no-index <path> <path> 

उसे गलती का एहसास करने के लिए पर्याप्त नहीं हो सकता है।

त्रुटि संदेश में जोड़ें "Not a git repository" जब हम ऐसा करने के लिए हमें निर्देश देने के लिए कोई स्पष्ट आदेश पंक्ति विकल्प के बिना "--no-index" मोड में गिर गई।


देखें:

  • commit 286bc123cd (gitster, Junio C Hamano) है, जो बताते हैं कि git diff --no-index की तरह एक नियमित रूप से (गैर Git) diff कार्य कर सकते हैं।
  • commit b214eddfb2 (डेल आर Worley) है, जो त्रुटि संदेश स्पष्ट किया:

"diff --no-index" के लिए दस्तावेज़ स्पष्ट करें।
राज्य कि जब एक भंडार के अंदर नहीं, --no-index निहित है और दो तर्क अनिवार्य हैं।

उपयोगकर्ता को सूचित करने के लिए diff-no-index से त्रुटि संदेश स्पष्ट करें कि CWD एक भंडार के अंदर नहीं है और इस प्रकार दो तर्क अनिवार्य हैं।

To compare two paths outside a working tree: 
usage: git diff --no-index <path> <path> 
0
नहीं आपके मामले में

, लेकिन शायद क्योंकि फ़ाइल है कि आप नहीं पारित मौजूद

$ git difftool HEAD HEAD^ -- path/that-not-exists 

कुछ नहीं

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