गिट लॉग शो फ़ाइल नाम जैसे svn log-v कैसे करें




git logging (6)

एसवीएन के लॉग में एक "-v" मोड होता है जो प्रत्येक प्रतिबद्धता में फ़ाइलों के फ़ाइल नामों को आउटपुट करता है, जैसे:

jes5199$ svn log -v
------------------------------------------------------------------------
r1 |   jes5199 | 2007-01-03 14:39:41 -0800 (Wed, 03 Jan 2007) | 1 line
Changed paths:
   A /AUTHORS
   A /COPYING
   A /ChangeLog
   A /EVOLUTION
   A /INSTALL
   A /MacOSX

गिट में प्रत्येक प्रतिबद्धता में बदली गई फ़ाइलों की सूची प्राप्त करने का कोई त्वरित तरीका है?


बदली गई फ़ाइलों के पूर्ण पथ नामों के लिए:

git log --name-only

पूर्ण पथ नाम और बदली गई फ़ाइलों की स्थिति के लिए:

git log --name-status

संक्षिप्त पथनाम और बदली गई फ़ाइलों का एक diffstat के लिए:

git log --stat

बहुत सारे विकल्प हैं, दस्तावेज़ देखें


मैं इसका उपयोग करता हूं:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniq

जो केवल फाइलों की सूची और उनके राज्य को जोड़ता है (जोड़ा, संशोधित, हटाया गया):

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...

git diff --stat HEAD^! आखिरी प्रतिबद्धता ( HEAD ) के लिए फ़ाइलों को बदल दिया और जोड़ा / हटाया लाइन गणना दिखाता है।

ऐसा लगता है कि संक्षेप में आउटपुट प्राप्त करने के लिए कोई भी कमांड नहीं है जिसमें फ़ाइल नामों को शामिल किया गया है और कई बार एक साथ कई पंक्तियों के लिए लाइन की गणना की गई है और इसलिए मैंने अपनी खुद की बैश स्क्रिप्ट बनाई है:

#!/bin/bash
for ((i=0; i<=$1; i++))
do
    sha1=`git log -1 --skip=$i --pretty=format:%H`
    echo "HEAD~$i $sha1"
    git diff --stat HEAD~$(($i+1)) HEAD~$i 
done

उदाहरण के लिए कहा जाता है। HEAD से HEAD~99 तक संक्षिप्त रूप में परिवर्तन प्राप्त करने के लिए ./changed_files 99 HEAD~99 । उदाहरण के लिए पाइप किया जा सकता है। less करने के लिए।


git show भी एक महान आदेश है।

यह svn diff की तरह है, लेकिन आप इसे एक प्रतिबद्ध guid पास कर सकते हैं और उस diff देखें।


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

git log --stat --pretty=short --graph

इसे छोटा रखने के लिए, अपने .gitconfig में उपनाम जोड़ें:

git config --global alias.ls 'log --stat --pretty=short --graph'

नोट: git whatchanged बहिष्कृत है, इसके बजाए git log उपयोग करें

नए उपयोगकर्ताओं को इसके बजाय गिट-लॉग [1] का उपयोग करने के लिए प्रोत्साहित किया जाता है। whatchanged कमांड अनिवार्य रूप से गिट-लॉग [1] जैसा ही है लेकिन कच्चे प्रारूप को आउटपुट आउटपुट दिखाने और विलय को छोड़ने के लिए डिफ़ॉल्ट है।

आदेश मुख्य रूप से ऐतिहासिक कारणों से रखा जाता है; गिट git log से पहले गिट सीखने वाले कई लोगों की उंगलियों का आविष्कार लिनक्स कर्नेल मेलिंग सूची को पढ़ने के लिए प्रशिक्षित किया जाता है।

आप प्रत्येक प्रतिबद्धता (प्रतिबद्ध संदेश के साथ) में परिवर्तित फ़ाइलों की एक सूची प्राप्त करने के लिए git whatchanged --stat कमांड का उपयोग कर सकते हैं।

संदर्भ





logging