查看没有合并提交的Git日志

156

我想查看特定用户提交的内容,并希望从输出中删除该用户所做的任何合并操作。如何实现?

使用git log --author=<name>可以检查用户的提交,但无法在输出中删除合并提交。

提示:在该回购的工作流程中不会发生合并冲突,所有分支都会在合并到主分支之前被变基,因此可以安全地从输出中删除合并提交,并且两个功能分支不会相互合并,也不会引起可能性。


2
如果合并出现冲突,他需要解决吗? - Joe Phillips
2
@JoePhilllips 在相关仓库的工作流程中不会发生这种情况,所有分支在合并到主分支之前都会进行变基。 - Anshul Goyal
3个回答

257
使用
git log --author=<name> --no-merges

此外,--first-parent选项可能对您有用:

--first-parent

仅跟随第一个父提交,在遇到合并提交时。当查看特定主题分支的演变时,此选项可以提供更好的概览,因为合并到主题分支的合并通常只是为了不时地调整到更新的上游,并且此选项允许您忽略由此类合并带入到您的历史记录中的个别提交。不能与--bisect选项结合使用。


使用 --pretty=format:"%h%x09%an%x09%ad%x09%s" 可以使输出更加美观。 - k1eran
1
@k1eran 这将截断提交正文(假设有正文)。 - Erythros
1
@Erythros已经理解了,我发现获取简洁易读的提交摘要非常有用。 - k1eran
1
或包括颜色和图形 log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent - Highmastdon
使用这个命令可以给你一个干净的变更列表,然后你可以使用 git cherry-pick <commit> 来获取提交,谢谢 :D - undefined

28

你可以使用--no-merges参数来忽略合并记录:

git log --no-merges --author=<name>

查看git log手册获取详细信息。


5
这仅排除了合并提交。但是,上游分支中的普通提交仍然可见。 - Shiplu Mokaddim

18

OP的问题已经得到了解答。 我对回答进行了详细说明,方便潜水者们理解。如果需要,使用Git别名来控制这些冗长的日志调用会更好。

我希望它能够对某些人有所帮助,并且不会被过多地贴上负面评价。

git log --no-merges --max-count=15 --pretty="format:%C(dim green) %<(9,trunc)%ar %C(bold magenta)%h %C(bold green)%<(12,trunc)%an %C(bold
yellow)%<(113,trunc)%s" --committer="<name>"

例子: 在此输入图片描述


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