【问题标题】:View git log without merge commits查看没有合并提交的 git 日志
【发布时间】:2016-06-27 00:44:54
【问题描述】:

我正在尝试查看特定用户所做的提交,并希望从输出中删除该用户所做的任何合并。我该怎么做?

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

PS:合并冲突不会发生在相关 repo 的工作流程中,所有分支在合并到 master 之前都会重新设置基础,因此可以安全地从输出中删除合并提交,同样,两个功能分支不会合并互相提高可能性。

【问题讨论】:

标签: git git-log


【解决方案1】:

使用

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

此外,--first-parent 选项可能会为您提供有用的结果:

--第一父母 在看到合并提交时,仅关注第一个父提交。此选项可以在查看 特定主题分支的演变,因为合并 进入主题分支往往只是为了不时调整到更新的上游,这个选项允许你 忽略引入到您的个人提交 通过这样的合并历史。不能与 --bisect 结合使用。

【讨论】:

  • --pretty=format:"%h%x09%an%x09%ad%x09%s" 会更好
  • @k1eran 这会截断提交主体(假设有一个)
  • @Erythros 理解,我发现获得一份简明易读的提交摘要很有用。
  • 或者包括颜色和图形log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)&lt;%an&gt;%Creset' --abbrev-commit --first-parent
【解决方案2】:

你可以省略与--no-merges的合并:

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

详情请参阅git log manpage

【讨论】:

  • 这仅排除合并提交。但是上游分支内的正常提交仍然可见。
【解决方案3】:

OP的问题已经回答了。为潜伏者解释了的答案。这个冗长的日志调用将为您提供由提交者 sans 合并过滤的漂亮视图。如果你愿意,可以使用 git alias 来驯服它。

我希望它对某人有好处,并且不会因投反对票而受到过于严厉的对待。

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>"

示例:

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 2012-06-10
    • 2012-01-05
    • 1970-01-01
    • 2014-01-28
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多