git日志,显示特定用户名和分支的文件

3
我希望将git log和git show结合起来,这样我就可以列出给定用户、给定分支的所有更改文件。我的目标是能够查看我个人在分支生命周期内所更改的文件(与从合并中更改的文件不同)。实现此目标的最佳方法是什么?

你想列出更改的文件名还是连同变更一并列出?你所说的“从合并中更改我的分支中的文件”是什么意思?一个分支始终包含所有合并到其中的提交。如果问题更具体,我认为我可以回答你。 - gucce
git log 允许您传递格式... 您可以通过作者对结果进行 grep... 查看 git man 页面。 - Samuel Robert
2个回答

3
你可以限制log输出给定的作者和/或提交者。
git log --author=my_username

您可以通过命名分支来查看分支的历史记录,但请注意,仅靠这个可能无法完全满足您的期望(见下文):

git log --author=my_username my_branch

事实上,这将列出所有从该分支“可达”的提交记录。(分支是指向单个提交的指针;默认情况下,日志会跟随“父提交”指针来提供分支历史。)

这将包括您认为属于“父分支”而不是“本分支”的提交。例如:

A -- B -- C -- D <--(master)
      \
       E -- F <--(my_branch)

在这里,所有的ABEF都能从my_branch到达。因此,如果你认为AB是“不在分支上”的,你需要更多的东西。而这取决于情况,因为提交“在特定分支上”(而不是“可从任意数量的分支到达”)的概念是用户喜欢强加在git上的人为概念,但git实际上并不知道。

在上面的例子中,你可以这么说:

git log --author=my_username master..my_branch

master排除所有可达的内容,仅留下EF(并基于作者信息筛选这些内容)。

最后,您似乎想要查看每个更改的补丁。 (您说“与show组合”。)因此,您可以使用-p

git log -p --author=my_username master..my_branch

或者如果您决定更愿意列出文件

git log --name-only --author=my_username master..my_branch

嗨,它说作者不是一个有效的选项。 - user997112
看起来我有一些错别字(我用了“-”而不是“--”)。已更新。任何全词选项的正确启动方式都是“--”。除此之外,我不知道为什么该选项无法被识别;在编写答案时,我已经测试过这种方法。 - Mark Adelsberger

0

这是我使用的一个Git别名;如果我理解问题正确,我认为这可以实现你想要的功能。

if $(git rev-parse --verify --quiet $1 >/dev/null); then
    COMMIT=$1;
    shift;
else
    COMMIT=HEAD;
fi;
git log "$@" $(git merge-base origin/master $COMMIT)..$COMMIT;

使用方法:git <别名> [提交] [额外参数],所以我会执行 git lo --author="John Doe"。您可以添加额外的git log 参数,比如 -p--stat,来找到您需要的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接