कैसे पता करें कि किस कोड में एक विशेष कोड जोड़ा गया था?


82

मैं यह जानना चाहता हूं कि मैंने नीचे दिए गए कोड को किस अपराध में जोड़ा है:

if (getListView().getChildCount() == 0)
                getActivity().findViewById(android.R.id.empty).setVisibility(View.VISIBLE);

मुझे यह कैसे हासिल होगा?

जवाबों:


77

git blameफ़ाइल पर चलाएँ । यह आपको कमिट आईडी, दिनांक और समय दिखाएगा, और जिसने इसे किया है- प्रत्येक पंक्ति के लिए। तो बस प्रतिबद्ध पहचानकर्ता की प्रतिलिपि बनाएँ और आप इसे में git log <commit>या में उपयोग कर सकते हैं git show <commit>

उदाहरण के लिए, मुझे एक फाइल मिली है, जिसे test.txt कहा जाता है, जिसमें अलग-अलग कमिट्स में लाइनें जोड़ी जाती हैं:

$ cat test.txt
First line.
Second line.

चल रहा है git blame:

$ git blame test.txt
^410c3dd (Leigh 2013-11-09 12:00:00 1) First line.
2365eb7d (Leigh 2013-11-09 12:00:10 2) Second line.

पहला बिट कमिट आईडी है, फिर नाम, फिर दिनांक, समय, समय क्षेत्र और अंत में लाइन नंबर और लाइन सामग्री।


22
समस्या यह है कि यह केवल तब दिखाता है जब उन फ़ाइलों को बदल दिया जाता है जहां अंतिम परिवर्तन किया गया था और जब उन्हें जोड़ा नहीं गया था।
18

@ensonic यह जवाब दिलचस्प हो सकता है अगर ऐसा है (जैसे कि लाइन स्थानांतरित कर दी गई थी, या एक
व्हाट्सएप

3
उपयोगी अतिरिक्त परिणाम प्राप्त करने के लिए हैgit blame test.txt | grep 'First line'
जोनाथन लॉकले

3
यह ओपी के सवाल का जवाब नहीं देता है। हमारे पास एक समस्या थी जहां हमारे सभी रिपॉजिटरी एक "री-इंडेंट कोड" परिवर्तन के माध्यम से गए, टैब को 4 स्थानों से सिकोड़ने के लिए 2. उस पल से, सभी गिट दोष हमेशा उस व्यक्ति को प्रकट करेंगे जो कोड को फिर से इंडेंट करते हैं - नहीं एक जिसने इसे पेश किया। git log -S चाल करता है।
मोटी श्नोर

78
git log -S searchTerm

आपको वह कमिट देता है जिसमें खोज शब्द पेश किया गया था।


7
मुझे लगता है कि यह सबसे अच्छा जवाब है क्योंकि ओपी कुछ कोड (फ़ाइल नहीं) के लिए खोज करना चाहता था।
dr_

मैं सहमत हूं - मुझे एक समस्या थी जहां सभी रिपॉजिटरी एक "री-इंडेंट कोड" सत्र से गुजरती थी, टैब को 4 स्थानों से सिकोड़ने के लिए 2. उस पल से, सभी गिट दोष हमेशा उस व्यक्ति को प्रकट करेंगे जो कोड को फिर से इंडेंट करता है - वह नहीं जिसने इसे पेश किया। git log -S चाल करता है।
मोटी श्नोर

42

पूर्ण फ़ाइल पर दोष जारी करने की तुलना में कुछ तेज है। यदि लाइन है ${lineno}और फ़ाइल ${filename}आप कर सकते हैं:

git blame -L ${lineno},${lineno} ${filename}

उदाहरण:

git blame -L 2,2 test.txt

5
यह वास्तव में इस सवाल का जवाब नहीं देता है - जब तक कि कोड की लाइन कभी नहीं बदली गई थी। यह प्रकट करेगा कि कौन उपयोगकर्ता है जिसने पिछली बार कोड की इन पंक्तियों को बदल दिया था। उन्हें पेश करने वाला नहीं। git लॉग -S, हालांकि, होगा। हालांकि, उपयोगी तकनीक ...
मोति श्नोर

20
git log -S "mention here line of code" [file-path]    

उदाहरण के लिए:

git log -S "First line" test.txt         

फ़ाइल नाम को इसके पथ के साथ प्रदान करना स्पष्ट है, क्योंकि अधिकांश समय, हम यह जानना चाहते हैं कि किसी विशेष फ़ाइल में किसी विशेष कोड खंड को किसने प्रस्तुत किया है।


क्षमा करें, मैं इसे प्राप्त नहीं कर सकता - क्या "कोड की यहाँ उल्लेख लाइन" में रखा जाना चाहिए। पंक्ति-संख्या? वास्तविक लाइन सामग्री? एक पाठ के लिए खोज करने के लिए? क्या आप कृपया स्पष्ट हो सकते हैं?
मोटी श्नोर

1
ठीक। मैंने इसका उपयोग किया, और मैंने परिणामों पर आश्चर्य किया। यह एक जीवन रक्षा है। वास्तव में। हमारे बल्कि अनाड़ी और घटिया कॉर्पोरेट रिपॉजिटरी में, कुछ बुद्धिमान-व्यक्ति ने कोड के 4 से 2 मीटर से अधिक 1.2 मीटर लाइनों में टैब रिक्ति को बदलने का फैसला किया। बेशक उस पल से - दोष दोष व्यर्थ है - क्योंकि हर लानत रेखा फिर से स्रोतों को फिर से इंडेंट करने की उसी बुरा प्रतिबद्ध द्वारा बदल गई है। तो - यह वास्तव में मुझे रस्सी की आवश्यकता थी - यह खोजने के लिए कि किसने कोड की एक पंक्ति का "आविष्कार" किया था, न कि अंतिम व्यक्ति ने इसे बदल दिया था। धन्यवाद। बड़ा हाथ।
मोटी श्नोर

सराहना के लिए धन्यवाद।
अंशुल सिंघल

1
लिनक्स टर्मिनल में कोड की लाइन के लिए सिंगल कोट्स की आवश्यकता थी:git log -S 'some code' path/to/file.c
डैनियल होम्स

यह एक जीवन रक्षक था! धन्यवाद!
सैफ अल फलाह

0

यदि कोड को ब्राउज़ करने के लिए Gitरिपॉजिटरी और intellijIDE के साथ-साथ कोड का रखरखाव किया जा रहा है, तो मैंने निम्न तरीके को सहज पाया है:

  1. में फ़ाइल खोलें intellij
  2. संदर्भ मेनू पर जाएं -> गिट -> एनोटेट।
  3. नई विंडो दिखाई देगी जहां नई विंडो में प्रत्येक पंक्ति बताती है कि उस लाइन को किसने प्रतिबद्ध किया है।

निम्नलिखित स्क्रीनशॉट संदर्भ के लिए हैं:

यहाँ छवि विवरण दर्ज करें

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