हटाई गई फ़ाइल foo के लिए "git लॉग-इन- foo" काम क्यों नहीं करता है?


89

मेरे रिपॉजिटरी में बदलाव हुए जैसे:

  1. ... कुछ असंबंधित ...
  2. foo100 लाइनों की सामग्री के साथ नई फ़ाइल बनाएं
  3. ... हस्तक्षेप करता है, जिनमें से कुछ स्पर्श foo...
  4. fooकिसी मौजूदा फ़ाइल के शीर्ष पर barऔर git rm fooउसी प्रतिबद्ध में सामग्री डालें
  5. ... अधिक असंबंधित कॉम ...

अब मैं हटाई गई फ़ाइल का लॉग देखना चाहता हूं foo। सब कुछ मैंने पढ़ा है, जिसमें एसओ भी शामिल है, कहते हैं कि मुझे सक्षम होना चाहिए git log -- foo, लेकिन यह कमांड कोई आउटपुट नहीं देता है।

यदि मुझे वह वचन मिल जाता है जिसमें fooमैं हटाना शामिल कर सकता हूं git log 1234abcd -- fooऔर उसका लॉग देख सकता हूं , तो मुझे लगता fooहै कि समस्या नहीं है। यह भी ध्यान दें कि git merge-base HEAD 1234abcdआउटपुट 1234abcd[...], इसलिए मुझे लगता है कि यह साबित करना चाहिए कि कमिट से पहुंच योग्य है HEAD। ध्यान दें कि fooमेरे काम करने वाले पेड़ में कोई फ़ाइल नहीं है (स्पष्ट है, क्योंकि इसे हटा दिया गया था)। OS X पर Git 1.7.1.1 का उपयोग करना।

git log -- fooमेरे लिए काम क्यों नहीं करता है और मैं इसे कैसे ठीक कर सकता हूं? धन्यवाद!


5
क्या आपने कोशिश की git log --follow -- fooया git log --follow -M -- foo? (नाम का पता लगाने के लिए मजबूर करने के लिए)
VONC

1
बकवास, मैंने कोशिश की थी --follow- लेकिन पढ़ने के historyबाद मुझे लगता है कि मैं cd'ed के बाद से कहीं और था जब मैंने इसे आज़माया, तो मार्ग को अमान्य बना दिया। git log --follow -- fooकाम किया जब मैंने सही शुरुआती बिंदु से कोशिश की। मुझे लगता है कि गिट को किसी तरह के नाम बदलने fooमें माना जाता है bar? किसी भी मामले में, धन्यवाद! यदि आप इसे एक उत्तर के रूप में प्रतिष्ठित करेंगे तो मुझे इसका श्रेय मिलेगा।
user385804

1
कष्टप्रद जो प्रश्न शीर्षक में --बदल जाता है ...
Cascabel

जवाबों:


118

आप उस --followविकल्प का उपयोग करना चाहते हैं git log, जिसे मैन पेज में वर्णित किया गया है:

Continue listing the history of a file beyond renames.

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

git log --follow -- foo

अपडेट करें:

Git 2.9+ ने अब इसे डिफ़ॉल्ट रूप से सभी git diffऔर git logकमांडों के लिए सक्षम कर दिया है :

"Git diff" और "git log" परिवार में पोर्सिलेन स्तर के कमांड का सामना करने वाला अंतिम उपयोगकर्ता डिफ़ॉल्ट रूप से नाम बदलने में सक्षम बनाता है; आप अभी भी इसे अक्षम करने के लिए "diff.renames" कॉन्फ़िगरेशन चर का उपयोग कर सकते हैं।

सिर के लिए एक्स-यूरी के लिए धन्यवाद!


1
इसने बिना --followभाग के मेरे लिए काम किया । मुझे बस जोड़ने की जरूरत थी --। मैं दौड़ रहा हूं git-2.9.0
x-yuri
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.