git - गिट संस्करण का उपयोग कर फ़ाइल का परिवर्तन इतिहास देखें





git-log (18)


git whatchanged -p filename git log -p filename इस मामले में git log -p filename बराबर है।

आप यह भी देख सकते हैं कि फ़ाइल के अंदर कोड की एक विशिष्ट पंक्ति git blame filename साथ बदल दी गई थी। यह एक छोटी प्रतिबद्ध आईडी, लेखक, टाइमस्टैंप, और फ़ाइल में प्रत्येक पंक्ति के लिए कोड की पूरी लाइन मुद्रित करेगा। आपको बग मिलने के बाद यह बहुत उपयोगी होता है और आप जानना चाहते हैं कि इसे कब पेश किया गया था (या यह किसकी गलती थी)।

मैं गिट में एक व्यक्तिगत फ़ाइल के परिवर्तन इतिहास को कैसे देख सकता हूं, क्या बदल गया है इसके साथ पूरा विवरण?

मुझे अब तक मिल गया है:

git log -- [filename]

जो मुझे फ़ाइल का प्रतिबद्ध इतिहास दिखाता है, लेकिन मैं प्रत्येक फ़ाइल परिवर्तन की सामग्री पर कैसे प्राप्त करूं?

मैं एमएस सोर्ससेफ से संक्रमण करने की कोशिश कर रहा हूं और यह एक साधारण right-clickshow history




SourceTree उपयोगकर्ता

यदि आप अपने भंडार को देखने के लिए SourceTree का उपयोग करते हैं (यह मुफ़्त है और काफी अच्छा है) तो आप एक फ़ाइल पर राइट क्लिक कर सकते हैं और लॉग का चयन कर सकते हैं

प्रदर्शन (नीचे) गिटक से अधिक मित्रवत है और सूचीबद्ध अन्य विकल्प। दुर्भाग्यवश (इस समय) कमांड लाइन से इस दृश्य को लॉन्च करने का कोई आसान तरीका नहीं है - स्रोत ट्री का सीएलआई वर्तमान में केवल रिपोज़ खोलता है।




इसके लिए मैं उपयोग करूंगा:

gitk [filename]

या पिछले नाम फ़ाइल नाम का पालन करने के लिए

gitk --follow [filename]



यदि आप पाठ-आधारित रहना पसंद करते हैं, तो आप tig का उपयोग करना चाह सकते हैं।

शीघ्र इंस्टॉल करना:

  • apt-get : # apt-get install tig
  • होमब्रू (ओएस एक्स) : $ brew install tig

एक फ़ाइल पर इतिहास देखने के लिए इसका इस्तेमाल करें: tig [filename]
या विस्तृत रेपो इतिहास ब्राउज़ करें: tig

gitk समान लेकिन पाठ आधारित। टर्मिनल में रंग का समर्थन करता है!




आप यह भी कोशिश कर सकते हैं जो उन कार्यों को सूचीबद्ध करता है जिन्होंने फ़ाइल के एक विशिष्ट भाग को बदल दिया है (गिट 1.8.4 में कार्यान्वित)।

लौटा परिणाम उन विशेषताओं की सूची होगी जो इस विशेष भाग को संशोधित करते हैं। कमांड इस प्रकार है:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

जहां upperLimit start_line_number है और lowLimit फ़ाइल का ending_line_number है।




git log --follow -p -- file

यह फ़ाइल का पूरा इतिहास दिखाएगा (इतिहास के नाम से परे इतिहास और प्रत्येक परिवर्तन के लिए diffs के साथ)।

दूसरे शब्दों में, यदि bar नाम की गई फ़ाइल को एक बार foo नाम दिया गया था, तो git log -p bar ( --follow विकल्प के बिना) केवल उस फ़ाइल तक का इतिहास दिखाएगा जहां इसका नाम बदल दिया गया था - यह नहीं दिखाएगा फ़ाइल का इतिहास जब इसे foo रूप में जाना जाता था। git log --follow -p bar का उपयोग करना - git log --follow -p bar फ़ाइल के पूरे इतिहास को दिखाएगा, जिसमें फ़ाइल में किए गए किसी भी बदलाव सहित इसे foo रूप में जाना जाता था। -p विकल्प सुनिश्चित करता है कि प्रत्येक परिवर्तन के लिए diffs शामिल हैं।




आप उपयोग कर सकते हैं

git log -p filename

गिट को प्रत्येक लॉग एंट्री के लिए पैच जेनरेट करने दें।

देख

git help log

अधिक विकल्पों के लिए - यह वास्तव में बहुत अच्छी चीजें कर सकता है :) केवल एक विशिष्ट प्रतिबद्धता के लिए भिन्नता प्राप्त करने के लिए आप कर सकते हैं

git show HEAD 

या पहचानकर्ता द्वारा कोई अन्य संशोधन। या प्रयोग करें

gitk

परिवर्तनों को दृष्टि से ब्राउज़ करने के लिए।




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

git diff --cached



मैंने इस सटीक उद्देश्य के लिए git-playback लिखा था

pip install git-playback
git playback [filename]

इसके परिणामस्वरूप कमांड लाइन (जैसे git log -p ) में परिणाम प्रदर्शित करने का लाभ होता है जबकि आपको तीर कुंजियों (जैसे gitk ) का उपयोग करके प्रत्येक प्रतिबद्धता के माध्यम से कदम उठाने देता है।




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




यदि आप गिट प्लगइन के साथ ग्रहण का उपयोग कर रहे हैं, तो इसका इतिहास के साथ एक उत्कृष्ट तुलनात्मक दृश्य है। फ़ाइल पर राइट क्लिक करें और "तुलना करें" => "इतिहास" का चयन करें




यदि आप किसी अन्य फ़ाइल पर शामिल फ़ाइल के पूरे इतिहास को देखना चाहते हैं, तो उपयोग करें:

gitk --all <filename>



उनके माध्यम से पढ़ने और थोड़ा सा खेलने के बाद अन्य उत्तरों का सारांश:

सामान्य कमांड लाइन कमांड होगा

git log --follow --all -p dir/file.c

लेकिन आप इसे देखने के अधिक मानव-पठनीय तरीके देने के लिए या तो गिटक (गुई) या टिग (टेक्स्ट-यूई) का भी उपयोग कर सकते हैं।

gitk --follow --all -p dir/file.c

tig --follow --all -p dir/file.c

डेबियन / उबंटू के तहत, इन सुंदर उपकरणों के लिए इंस्टॉल कमांड अपेक्षित है:

sudo apt-get install gitk tig

और मैं वर्तमान में उपयोग कर रहा हूँ:

alias gdf='gitk --follow --all -p'

ताकि मैं उपनिर्देशिका dir में सब कुछ का एक केंद्रित इतिहास प्राप्त करने के लिए gdf dir टाइप कर gdf dir




या:

gitx -- <path/to/filename>

यदि आप gitx का उपयोग कर रहे हैं




git diff -U <filename> आपको एक एकीकृत diff देता है।

यह लाल और हरे रंग पर रंगीन होना चाहिए। यदि यह नहीं है, तो चलाएं: git config color.ui auto पहले।




उत्कृष्ट गिट एक्सटेंशन के साथ , आप इतिहास में एक बिंदु पर जाते हैं जहां फ़ाइल अभी भी मौजूद है (अगर इसे हटा दिया गया है, अन्यथा केवल HEAD पर जाएं), File tree टैब पर स्विच करें, File tree पर राइट-क्लिक करें और File history

डिफ़ॉल्ट रूप से, यह नामों के माध्यम से फ़ाइल का पालन करता है, और Blame टैब किसी दिए गए संशोधन पर नाम देखने की अनुमति देता है।

इसमें कुछ मामूली गॉथस हैं, जैसे fatal: Not a valid object name दिखाना fatal: Not a valid object name हटाना संशोधन पर क्लिक करते समय View टैब में fatal: Not a valid object name , लेकिन मैं इसके साथ रह सकता हूं। :-)




यदि आप TortoiseGit का उपयोग करते हैं तो आपको फ़ाइल पर राइट क्लिक करने में सक्षम होना चाहिए और TortoiseGit --> Show Log । पॉप अप करने वाली विंडो में, सुनिश्चित करें कि:

  • ' Show Whole Project ' विकल्प की जांच नहीं की गई है।

  • ' All Branches ' विकल्प की जांच की गई है।




git reset filename.txt

मौजूदा इंडेक्स से filename.txt नाम की एक फ़ाइल को हटाएगा, "कुछ भी करने के लिए" क्षेत्र, बिना किसी बदलाव के।





git git-log