如何显示当前分支与其远程分支之间的日志

How to show log between current branch and its remote counterpart

有时从远程存储库获取后,我发现我的分支在后面:

> git status
On branch develop
Your branch is behind 'origin/develop' by 7 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

在更新我的本地分支之前,我想查看我将要获取的内容的日志。我可以使用

> git log develop..origin/develop

既然我已经在 develop 分支上,有没有办法用更少的输入来完成上述操作?也就是说,不提供本地和远程分支名称?

这会特别有用,因为我经常切换到功能分支并且也希望看到这些分支的此类日志。

是的,一个简短且 branch-agnostic 的方法是使用 @{upstream} construct :

git log ..@{u}

(注意:由于此处省略了范围的第一部分,因此隐含了 HEAD,但完整的详细语法为 HEAD..HEAD@{upstream}。)


当然,将其设置为 alias.behind(例如)非常方便,因为它会使用您所在的任何分支。

在评论后编辑:我添加了有用的对应物 alias.ahead 来检查即将推送的提交(有一个问题:而 @{upstream} 指的是您的配置将从 拉取的远程分支,配置中设置为推送 的分支是 @{push} (doc) ).在 一些 特定的三向设置中,这些设置可能不同,但在大多数简单的工作流程中,两者都指向同一遥控器的同一分支。不过也是为了以防万一。

git config --global alias.behind 'log [any format option you prefer] ..@{u}'
git config --global alias.ahead 'log [any format option you prefer] @{push}..'