"Git diff" कुछ नहीं करता है


94

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

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

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

अगर मैं अपने रूट वर्कस्पेस से एक डायरेक्टरी वापस लेता हूं, तो "git diff" टाइप करने से मुझे यह मिलता है:

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

यह अपेक्षित व्यवहार हो सकता है क्योंकि मैं एक गिट रिपॉजिटरी के अधीन नहीं हूं।

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


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

नोट: रेपो के git diff बाहर उपयोग करते समय त्रुटि संदेश जल्द ही साफ हो जाएगा। देखें नीचे मेरा उत्तर
VonC

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

जवाबों:


110

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

git diff [--options] [-] […]

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

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

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. इंडेक्स के साथ काम करने वाली कॉपी को मुश्किल करें
  2. HEAD के साथ सूचकांक को मुश्किल करें
  3. HEAD के साथ काम करने की प्रतिलिपि बनाना मुश्किल है

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


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

2
तस्वीर को पूरा करने के लिए, git diff --cached का उपयोग करें सिर्फ यह दिखाने के लिए कि सूचकांक में क्या है।
डगलस

क्या अंतर अलग होता है: (इंडेक्स) - (वर्किंग डायरेक्टरी) या अन्य तरीके से: (वर्किंग डायरेक्टरी) - (इंडेक्स)?
21

4

नोट: जीआईटी 1.8.5 या 1.9, Q4 2013 को शुरू करना :

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

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

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

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


देख:

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

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

To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>

2

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


1

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

git diff old_dir new_dir

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


0

आपके मामले में नहीं, लेकिन शायद इसलिए कि आपके द्वारा पास की गई फ़ाइल मौजूद नहीं है

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

कुछ नहीं हुआ

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