基于文件模式显示更改的修订和文件的Git命令

ncecgwcz  于 2023-04-10  发布在  Git
关注(0)|答案(2)|浏览(107)

我想找到一种方便的方法来列出包含对特定文件模式(比如pom.xml)的更改的修订,并列出提交消息和更改的文件。
是否有开箱即用的东西,或者我需要首先使用以下内容扫描历史记录:

git rev-list --all -- 'pom.xml'

然后一个接一个地检查每一个修订,列出更改的文件?

0pizxfdo

0pizxfdo1#

git rev-list是更低级别的,git log有很多方便的地方,比如深入分析提交的影响,例如他们改变了什么文件:

git log --pretty=%H -- \*.xml

git log --pretty=%H -m --first-parent -- \*.xml

分析合并的净效果,而不是分别跟踪每个合并的提交。
并列出提交消息和更改的文件。
那么你真的需要git log

git log -m --first-parent --name-only --full-diff -- \*.xml

评论:要将提交id粘贴到更改后的文件前面,只需使用awk,它就是为此而构建的。IRL它在真正的oneliner领域中,但为了便于理解,它被打破了

git log -m --first-parent --pretty=format:%H --name-only --full-diff -- \*.xml \
| awk '!NF  { id=""; next }
       !id  { id=$0; next }
       { print id,$0 }
'
68de4m5k

68de4m5k2#

我在找这样的东西:

#!/bin/bash

set -euo pipefail

START_COMMIT=${1:-$(git rev-list --max-parents=0 HEAD)}
END_COMMIT=${2:-$(git rev-parse HEAD)}
echo "Searching for changes to pom.xml files between $START_COMMIT and $END_COMMIT"

for commit in $(git rev-list $START_COMMIT..$END_COMMIT)
do
    if git diff-tree --no-commit-id --name-only -r $commit | grep -q "pom.xml"; then
        git diff-tree --no-commit-id --name-only -r $commit | grep "pom.xml" | while read file; do
            echo "$commit: $file"
        done
        echo ""
    fi
done

它将打印出:

Searching for changes to pom.xml files between 5feff7ed67b2245173973d8057b7d434863a031a and cfc3d544fb8209c55a41f87aa652b488e05423a3
4fb99107e944f151dcdee9636122d6b9579ce993: data/pom.xml
4fb99107e944f151dcdee9636122d6b9579ce993: pom.xml
4fb99107e944f151dcdee9636122d6b9579ce993: webapp/pom.xml

c3032fee2389329d5914d38b13e8f42e453439a3: webapp/pom.xml

e062ac683089b221c3f156865dd9ecf5ee35edae: webapp/pom.xml

fd60a897548d41f20374f0059b42848e028cbd78: pom.xml

6fdd2bd57ff2145ad1f88bda7f51093a93147d06: data/pom.xml
6fdd2bd57ff2145ad1f88bda7f51093a93147d06: pom.xml

f0349f63d466c11c2d2d11c2322d94f78646bd93: data/pom.xml
f0349f63d466c11c2d2d11c2322d94f78646bd93: webapp/pom.xml

19137762ca2dbe223c7139bd13c1c236839a807a: pom.xml
19137762ca2dbe223c7139bd13c1c236839a807a: webapp/pom.xml

6ad48fcbb8491a67fb10d2ffe39f1afc7005f11f: webapp/pom.xml

83fe9740d3790eb700082f09c6ff7c8d8635f4dd: webapp/pom.xml

d597001c54d980ad03b08b8bfd758eabc3c82ea6: webapp/pom.xml

e0b132884bda2645a7b3b597b5778b48ea4c6bc7: data/pom.xml
e0b132884bda2645a7b3b597b5778b48ea4c6bc7: pom.xml
e0b132884bda2645a7b3b597b5778b48ea4c6bc7: webapp/pom.xml

相关问题