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

时间:2016-07-18 10:16:42

标签: git command-line-interface shortcut git-log

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

git log branchName..origin/branchName

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

git log ..origin

3 个答案:

答案 0 :(得分:7)

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

git log ..@{u}

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

git log ...@{u}

或者,如果您只想查看自上次提取时未被推送的本地提交,请在@{u}后面加上两个点:

git log @{u}..

说明:

  • @{u}是`HEAD @ {upstream}的缩写
    • master@{upstream}表示我的本地“主”分支的远程跟踪分支。 master@{upstream}origin/master相同,如果您的master分支正在跟踪名为master的遥控器上名为origin的远程分支。
    • 如果省略分支名称(例如master),则会使用当前分支。
    • 在这种情况下,
    • upstream可以缩写为u。因此,如果您当前的分支名为@{u},则master@{upstream}master相同。
  • ..用于指定一系列提交。
    • 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

答案 1 :(得分:0)

这可能不是一个答案,而是一个长期的评论,你可以应用一种解决方法,以避免一遍又一遍地重新输入相同的东西。

您可以自己写一个别名,请参阅下面的示例

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

alias.<name> - 只要您记得,就用您喜欢的任何内容替换<name>。您可以像这样调用此函数:

git branchlog

答案 2 :(得分:-1)

我没有测试过这个。

  1. 使用以下命令创建bash文件:git log $1..origin/$1。把它命名为你喜欢的(我称之为foo.sh)。

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

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

  4. 现在您已准备好按以下方式尝试:git branchhistory master