2012-07-18 20 views
126

कहें कि मेरे पास फ़ाइल foo.js है जो कुछ समय पहले की गई थी। मैं को बस उस प्रतिबद्धता को ढूंढना चाहूंगा जहां यह फ़ाइल पहले जोड़ा गया था।फ़ाइल जोड़ें जहां फ़ाइल जोड़ा गया था

जवाब और अपने ही फेरबदल पढ़ने के बाद, यह काम करता है मुझे

git log --follow --diff-filter=A --find-renames=40% foo.js 
+6

डांग, भाई। आपकी प्रोफ़ाइल पर आपके पास 1 और बहुत अच्छी चीजें हैं। आपने कहीं नीचे डाउनवॉट प्राप्त करने के लिए कुछ ट्रोलिंग करनी होगी। –

+0

उनका खाता "अस्थायी रूप से" निलंबित कर दिया गया था ... ऐसा लगता है कि कई सालों में ऐसा लगता है। – msanford

उत्तर

203

यहाँ आसान है, "शुद्ध Git" जिस तरह से यह करने के लिए, कोई पाइपलाइन की जरूरत:

git log --diff-filter=A -- foo.js 

दस्तावेज़ों की जांच करें, आप हटाए गए, संशोधित, आदि के लिए एक ही काम कर सकते हैं

मेरे पास इसके लिए एक आसान उपनाम है क्योंकि मैं हमेशा इसे भूल जाओ:

git config --global alias.whatadded 'log --diff-filter=A' 

इस बनाता है यह रूप में सरल रूप में:

git whatadded -- foo.js 
+17

+1! हालांकि, मेरी फाइल सबफ़ोल्डर में थी, इसलिए मैंने केवल 'गिट लॉग - डिफ-फ़िल्टर = ए - * सबफ़ोल्डर/foo.js' – Geo

+2

में तारांकन जोड़ने के बाद ही काम किया, यह उन फ़ाइलों पर कैसे काम करता है जो विलय किए गए हैं अन्य शाखाएं, लेकिन जो मर्ज करने वाले उपयोगकर्ता द्वारा विलय की जा रही शाखा में जरूरी नहीं थीं? – g33kz0r

13
git log --oneline -- foo.js | tail -n 1 
+1

मुझे '--follow' होना अच्छा लगेगा। –

0

निम्नलिखित हो सकता है आप ब्याज की है नहीं, लेकिन मैं यह भविष्य में आपकी मदद करेगा लगता है और Git में पारिस्थितिकी तंत्र डिबगिंग का हिस्सा है:

आप यह जान सकें कि संशोधन और लेखक पिछले एक फ़ाइल की प्रत्येक पंक्ति संशोधित especifiqly एनोटेशन फ़ाइल Git-दोष का उपयोग कर सकते जाएं https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git

पूर्व। गिट दोष -एल 174,1 9 0 xx.py

+0

क्या आप समझा सकते हैं कि प्रत्येक ऑपरेंड क्या करता है? मुझे एहसास है कि आपने प्रासंगिक आरटीएफएम के लिए एक लिंक प्रदान किया है, लेकिन थोड़ी सी व्याख्या आपके पोस्ट को एक-स्टॉप शॉप बनाती है। – rossmcm

+0

प्रो-गिट बुक कहता है कि यदि आप अपने कोड में एक बग ट्रैक करते हैं और जानना चाहते हैं कि इसे कब पेश किया गया था और क्यों, एनोटेशन फ़ाइल अक्सर आपका सबसे अच्छा टूल होता है। यह आपको दिखाता है कि किसी भी फ़ाइल की प्रत्येक पंक्ति को संशोधित करने के लिए आखिरी प्रतिबद्धता क्या थी, इसलिए मैंने जो उदाहरण दिखाया है, वह आउटपुट को 174 से 1 9 0 तक आउटपुट तक सीमित करने के लिए -L विकल्प का उपयोग करता है और आखिरी चीज केवल वह लक्ष्य फ़ाइल है जिसे आप देखना चाहते हैं (xx.py) इस मामले में एक पायथन फ़ाइल @rossmcm – Reidel