是否有 git 命令在获取后显示新的上游提交?

Is there a git command to show new upstream commits after fetch?

是否有一些快捷方式来指定从远程跟踪分支获取新提交的时间间隔?而不是键入这个也是特定于分支的长命令:

git log branchName..origin/branchName

我正在寻找一些 git 间隔 hack,它将代表 branchName..origin/branchName 的间隔,类似(不起作用,相当于 git log ..origin/HEAD)

git log ..origin

这可能不是一个答案,而是一个很长的评论,其中包含您可以应用的解决方法,以避免一遍又一遍地重新输入相同的内容。

你可以给自己起个别名,见下面的例子

git config --global alias.branchlog \ `log branch..origin/branch`

alias.<name> - 将 <name> 替换为您能记住的任何内容。您可以这样调用此函数:

git branchlog

我还没有测试过这个。

  1. 使用以下命令创建一个 bash 文件:git log ..origin/。随意命名(我叫它foo.sh)。

  2. 确保它是可执行的:chmode +x foo.sh.

  3. 运行 git 命令:git config --global alias.branchhistory '!./path/to/foo.sh'

现在您可以按如下方式尝试:git branchhistory master.

如果您为您的分支机构配置了远程跟踪,这将执行您想要的操作:

git log ..@{u}

它将显示 remotes/branch 上的所有提交,这些提交尚未在您的本地 branch 上。如果您还想查看尚未推送的本地提交,请使用三个点:

git log ...@{u}

或者,如果您只想查看自上次获取以来尚未推送的本地提交,请将两个点放在 @{u}:

之后
git log @{u}..

解释:

  • @{u} 是 shorthand `HEAD@{upstream}
    • master@{upstream} 表示 我的本地 'master' 分支的远程跟踪分支。 master@{upstream}origin/master 相同,如果您的 master 分支正在跟踪名为 origin 的远程分支上名为 master 的远程分支。
    • 如果您省略分支名称(例如 master),则使用您当前的分支。
    • 在这种情况下,
    • upstream 可以缩写为 u。因此,如果您当前的分支名为 master.
    • ,则 @{u}master@{upstream} 相同
  • .. 用于指定提交范围。
    • A..B^A B 相同,这意味着 显示 B 中的所有提交但排除 A 中的提交。 也可以写成 B --not A.
    • 如果您省略任何一个引用,如 A....B,则省略的引用被假定为 HEAD.
  • 您可以使用 git rev-parse --symbolic-full-name @{u}
  • 查看您的上游跟踪配置的内容
  • 您可以使用 git branch --set-upstream-to=origin/master
  • 明确设置您的上游跟踪

您可以在 Git man pages:

中找到有关此类修订规范的所有详细信息
git help revisions  

man gitrevisions