G गिट दोष ’क्या करता है?


314

मैंने उपयोग करने के तरीकों के बारे में बहुत सारे प्रश्न देखे git blame, लेकिन मैं वास्तव में उन्हें नहीं समझता।

मुझे BlameGitHub इंटरफ़ेस पर फ़ाइलों के शीर्ष पर एक बटन दिखाई देता है । इसे क्लिक करने पर, यह बाईं पट्टी पर उपयोगकर्ता नाम के साथ कुछ भिन्न दिखाता है। वह क्या दर्शाता है?

git blameGitHub के अलावा वास्तव में इसका उपयोग क्यों किया जाता है?


66
यदि "दोष" लगता है, तो भी, आपके लिए दोषपूर्ण, आप इस स्क्रिप्ट को स्थापित कर सकते हैं और git praiseइसके बजाय उपयोग कर सकते हैं :) github.com/ansman/git-praise
जॉन किपरस्की

7
यह न तो दोष होना चाहिए, न ही प्रशंसा; यह स्वाभाविक रूप से नकारात्मक है और इसका उद्देश्य होना चाहिए।
pdvries 11

40
git objectively-determine-contributerबस इसके लिए एक ही अंगूठी नहीं है।
ऋत्विक बोस

27
@RitwikBose या केवलgit who
aktivb

जवाबों:


238

से Git-दोष :

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

जब एक या अधिक बार निर्दिष्ट किया जाता है, -L अनुरोधित लाइनों के लिए एनोटेशन को प्रतिबंधित करता है।

उदाहरण:

johndoe@server.com:~# git blame .htaccess
...
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  4) allow from all
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  5)
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  6) <IfModule mod_rewrite.c>
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  7)     RewriteEngine On
...

कृपया ध्यान दें कि git blameकालानुक्रमिक अर्थ में प्रति-पंक्ति संशोधन इतिहास नहीं दिखाता है। यह केवल दिखाता है कि अंतिम व्यक्ति में अंतिम दस्तावेज़ में एक पंक्ति को बदलने वाला अंतिम व्यक्ति कौन था HEAD

कहने का तात्पर्य यह है कि किसी डॉक्यूमेंट लाइन का पूरा इतिहास / लॉग देखने के लिए, आपको git blame path/to/fileअपने प्रत्येक कमिटमेंट को चलाने की आवश्यकता होगी git log


1
तो यह केवल अंतिम व्यक्ति को देखने के लिए है?
रिफ़ात एर्दम साहिन

2
हां, यह आपको अंतिम व्यक्ति को देखने की अनुमति देता है जिसने रेखा को बदल दिया।
मार्क

@Mark तो जब हम एक IDE पर एनोटेट करते हैं, तो यह आंतरिक रूप से एक git दोष कमांड बनाता है?
नागराजन शंमुगनाथन

2
@NagarajanShanmuganathan हाँ, अगर आप git का उपयोग करते हैं तो वह वही है जो पर्दे के पीछे हो रहा है।
मार्क

151

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


105
आदेश वास्तव में लगता है जैसे आप इसे चलाकर किसी को दोषी ठहराएंगे । इससे पहले कि मैं इस पोस्ट में क्या सीखता कम से कम यह है कि यह मेरे लिए कैसे लग रहा था।
फ्रांसिस्को सी।

12
@FranciscoC। आप इसे देख रहे हैं: github.com/jayphelps/git-blame-someone-else
DustWolf

2
@FranciscoC। रुको, क्या यह थोड़े नहीं है कि आप किसी और को दोष देते हैं?
इनाडेस

16
@IDDess शायद यह सिर्फ शब्दार्थ है, लेकिन git blameलगता है जैसे यह कुछ इसी तरह का प्रभाव होगा git commit, जहां वास्तव में यह सिर्फ आपको सूचित करता है कि कौन से बदलाव किए गए थे। वह और नकारात्मक शब्द "दोष" वहन करता है, कमांड को ध्वनि की तरह बनाएं जिससे आपको दूर रहना चाहिए और इस तरह के सवालों को स्पष्ट करना चाहिए।
फ्रांसिस्को सी।

20
स्पष्ट रूप से, इसे बुलाया जाना चाहिए git praise
pfnuesel

75

गिटहब से :

दोष कमांड एक Git फीचर है, जो यह निर्धारित करने में आपकी मदद करने के लिए डिज़ाइन किया गया है कि फाइल में किसने बदलाव किया।

इसके नकारात्मक-ध्वनि वाले नाम के बावजूद, गिट दोष वास्तव में बहुत सहज है; इसका प्राथमिक कार्य यह इंगित करना है कि किसने फ़ाइल में कौन सी लाइनें बदलीं, और क्यों। यह आपके कोड में परिवर्तनों की पहचान करने के लिए एक उपयोगी उपकरण हो सकता है।

मूल रूप से, git-blameयह दिखाने के लिए उपयोग किया जाता है कि संशोधन और लेखक ने किसी फ़ाइल की प्रत्येक पंक्ति को अंतिम रूप से संशोधित किया है। यह एक फ़ाइल के विकास के इतिहास की जाँच करने जैसा है।


2
यह मेरे लिए बेमानी लगता है, आप कमिट के बीच एक अंतर देख सकते हैं और यूज़र को कमिट लॉग से पहचान सकते हैं। अगर मैं यहां सब कुछ समझ रहा हूं, तो कमिटेड हिस्ट्री की तुलना में यह कम है। शायद मुझे कुछ याद आ रहा है, लेकिन ऐसा लगता है जैसे सार्वजनिक अपमान के माध्यम से लागू किए गए मानकों को कोड करना।
user1431356

8
मुझे लगता है कि कमांड का नाम लिनस की विशिष्ट समझदारी का परिणाम था :) इसका मतलब किसी को अपमानित करने के लिए इस्तेमाल नहीं किया जाना था :) यह सिर्फ एक उपयोगी कमांड के नाम के लिए एक मजाकिया (या नहीं) था :)
म्लादेन बी।

2
@ user1431356 - मुद्दा यह है कि आप पहली लॉग लाइन चाहते हैं जो किसी विशेष लाइन को प्रभावित करती है । अन्यथा आपको किसी विशेष स्ट्रिंग के लिए लॉग के माध्यम से खोजना होगा। (जो वास्तव में एक व्यवहार्य दृष्टिकोण है - "git log -S" के लिए पुरुष पृष्ठों में देखें।)
azernik

1
"दोष" शीर्षक कुछ ऐसा है जो जीट से पहले वर्षों से मौजूद है। बस svn के कार्यान्वयन को देखें । यह लिनस टोरवाल्ड्स द्वारा दिया गया नाम नहीं था।
जैकस

"मुझे लगता है कि कमांड का नाम लिनुस की विशिष्ट समझदारी का परिणाम था :) इसका इस्तेमाल किसी को अपमानित करने के लिए नहीं किया गया था :)" योग्य ... अधिक यह लिनुस के व्यक्तित्व की तरह था और इसका मतलब था किसी को अपमानित करना।
सिनास्टैटिक

34

git blameआदेश पता है, जो / जो प्रतिबद्ध एक फाइल करने के लिए किए गए नवीनतम परिवर्तन के लिए जिम्मेदार है प्रयोग किया जाता है। प्रत्येक पंक्ति के लेखक / प्रतिबद्ध को भी देखा जा सकता है।

git blame filename (कोड में सभी लाइनों के बदलाव के लिए जिम्मेदार है)

git blame filename -L 0,10 (लाइन "0" से लाइन "10" में बदलाव के लिए जिम्मेदार है)

दोष के लिए कई अन्य विकल्प हैं, लेकिन आम तौर पर ये मदद कर सकते हैं।


2

git blameआदेश संशोधन जो पिछले संशोधित लाइन से जानकारी के साथ लाइनों annotates, और ... Git 2.22 के साथ (Q2 -2019), ऐसा करेंगे तेजी से , एक प्रदर्शन ठीक की वजह से चारों ओर " git blameविशेष रूप से एक रेखीय इतिहास में", (जो आदर्श के लिए हमें अनुकूलन करना चाहिए)।

देखें प्रतिबद्ध f892014 (02 अप्रैल 2019) द्वारा डेविड Kastrup ( fedelibre)(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 4d8c4da , 25 अप्रैल 2019)

blame.c: मूल बूँदें उत्सुकता से न गिराएँ

जब एक माता-पिता बूँद पहले से ही चूजों को दोष देने के लिए कतारबद्ध हो चुके होते हैं, तो एक दोष कदम के अंत में बूँद को छोड़ने से यह तुरंत दूर हो जाएगा, आई / ओ की मात्रा दोगुनी हो जाएगी और रैखिक इतिहास को संसाधित करते समय खोलना होगा।

ऐसे माता-पिता को स्मृति में रखना एक उचित अनुकूलन की तरह लगता है जो पुरानी शाखाओं से मर्ज को संसाधित करते समय अधिक से अधिक स्मृति दबाव को उकसाना चाहिए।


1

git blameआदेश जब प्रत्येक पंक्ति अंतिम बार संशोधित किया गया था और जो संशोधन के लेखक लाइन द्वारा एक फ़ाइल लाइन की सामग्री की जांच करने और देखने के लिए प्रयोग किया जाता है।

यदि कोड में एक बग था, तो इसे पहचानने के लिए उपयोग करें कि इसे किसने डाला है, तो आप उसे दोष दे सकते हैं। गित दोष को दोष मिलता है।

यदि आपको एक लाइन कोड का इतिहास जानने की आवश्यकता है, तो इसका उपयोग करें git log -S"code here", जो कि दोष की तुलना में सरल है।

गिट लॉग बनाम गिट दोष

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