包含所有提交但部分差异的 git 日志

问题描述 投票:0回答:1

我想要一种方法来记录某些提交并提交路径参数,以便为每个提交显示这些路径上的差异(如果有),就像提供这些路径参数一样

git diff -- <path args>

git log -p <path args>
几乎实现了这一点。这是我希望它如何工作:

$ git log develop..mybranch -p mydir
1010101 my commit msg
(diff of files in mydir)
2323232 my other commit msg
(nothing here because the commit doesn't touch mydir)

问题是第二次提交不会显示,因为它没有触及

mydir

如何实现与

git log -p <path args>
相同的效果,但不跳过不触及给定路径的提交?

git diff git-diff git-log
1个回答
0
投票

git log <path args>
自动将提交限制为那些接触
<path args>
的提交,并且无法列出其他提交。因此,没有简单的方法可以做你想做的事。可以通过列出所有提交、解析列表、查看每个提交并逐一处理提交来完成。像这样:

git rev-list develop..mybranch -- mydir |
    while read sha1; do
        if git show --format= --name-only | grep -Fq mydir; then
            git show $sha1 # mydir found in the commit, show diff
        else
            git show -s $sha1 # mydir not found, don't show diff
        fi
    done

每次提交都有三个命令(

git show
grep
git show
)!上一个 大存储库会很慢,因此代码需要优化。

© www.soinside.com 2019 - 2024. All rights reserved.