如何快速检查哪个Git分支是最新的?

如何快速检查哪个Git分支是最新的?,git,git-branch,Git,Git Branch,例如,如果git上有4个分支,如下所示: branch1 branch2* (current branch) branch3 (newest commits here) master (oldest) 我的问题是: 如何检查当前分支是否是git命令行中最新的分支?如果没有,哪个分支机构是最新的?我的意思是哪个分支包含最新的提交 我如何在这个git存储库中列出比我的分支更新的所有提交(在任何分支中),而不切换到当前分支 您可以使用: git log --decorate --all --one

例如,如果git上有4个分支,如下所示:

branch1
branch2* (current branch)
branch3 (newest commits here)
master (oldest)
我的问题是:

  • 如何检查当前分支是否是git命令行中最新的分支?如果没有,哪个分支机构是最新的?我的意思是哪个分支包含最新的提交

  • 我如何在这个git存储库中列出比我的分支更新的所有提交(在任何分支中),而不切换到当前分支

您可以使用:

git log --decorate --all --oneline --graph
发件人:man git log

  • --修饰
    :打印显示的任何提交的引用名称
  • --all
    :假设refs/中的所有ref都列在命令行上为
  • --oneline
    :这是一起使用的
    --pretty=oneline--abbrev commit
    的缩写
  • --graph
    :在输出的左侧绘制提交历史的基于文本的图形表示
如果要从远程存储库下载最新的对象和引用,请执行前面的
git fetch

git fetch origin
此外,命令:

gitk

可以帮助您在一个简单的图形界面中查看所有提交和引用。

Edit:您可以在我的这篇文章中找到相关的shell脚本

哪个部门是最新的? […]哪个分支机构是最新的?我的意思是哪个分支包含最新的提交

我把这理解为

在所有本地分支机构中,找到其小费是最近的一家(在某种意义上,例如提交日期)

git for each ref
对此很方便;这个瑞士军刀司令部值得花时间来完成它的使命

命令 让我们一步一步地建立我们需要的命令

  • 第一个命令打印所有本地分支的(短)名称列表

    每个ref的git--format='%(refname:short)'\ 参考文献/总目
  • 下一个命令执行相同的操作,但按提交者日期按降序对结果进行排序(注意
    -
    ):

    每个ref的git--sort='-committerdate'\ --格式='%(参考名称:短)'\ 参考文献/总目
  • 下一个命令的作用与上一个命令相同,但仅将输出限制为一个条目:

    每个ref的git--count=1\ --排序='-committerdate'\ --格式='%(参考名称:短)'\ 参考文献/总目
  • 总之,我们现在有了一个命令,可以打印最近的(提交者日期方面的)分支引用的(短)名称:这正是我们想要的。太好了

    化名 为了方便起见,让我们基于它定义一个别名(下面称为
    最新分支
    ):

    git config--global alias.newest-branch“for each ref--count=1--sort='-committerdate'--format='%(refname:short)'refs/heads”
    
    健康检查 现在,让我们在中运行一些测试:

    $git分支
    维护
    *主人
    下一个
    聚氨基甲酸酯
    $git最新分行
    聚氨基甲酸酯
    #现在打印所有分支机构的列表及其提示的提交日期
    每个引用$git--sort='-committerdate'\
    --format=“%(引用名称:short)%09%(提交者日期)”
    参考文献/总目
    普周二2015年3月17日16:26:47-0700
    下周二2015年3月17日16:14:11-0700
    大师赛2015年3月17日星期二16:05:12-0700
    缅因州3月13日星期五22:57:25 2015-0700
    
    pu
    确实是最新的分支。耶


    目前的分支机构是最新的吗? 这很容易,现在我们有了我们的
    最新分支
    别名;我们所要做的就是将当前分支的名称与最新分支的名称进行比较。(为了更加健壮,您可能希望使用完整的refname而不是简短的refname)

    命令 当前分支的(短)名称由

    $git symbolic ref——短头
    主人
    
    让我们将其与最新分支进行比较,然后如果当前分支是最新分支,则打印
    yes
    ,否则打印
    no

    if[$(git最新分支)=$(git符号参考——短头)];然后
    printf“是\n”
    其他的
    printf“否\n”
    fi
    
    化名 太好了!为了方便起见,让我们也为此定义一个别名(下面称为
    islatest
    ):

    git config--global alias.isnewest'!if[$(git最新分支)=$(git rev parse--abbrev ref HEAD)];然后printf“是\n”;else printf“否\n”;fi'
    
    健康检查 (从上一次的健全性检查中,我们已经知道,
    pu
    是最新的分支。)

    $git分支
    维护
    *主人
    下一个
    聚氨基甲酸酯
    $git是最新的
    不
    $git结帐pu
    切换到“pu”分支
    您的分支机构使用“origin/pu”更新。
    $git是最新的
    对
    $git结帐维护
    切换到“维护”分支
    您的分支机构的“来源/维护”是最新的。
    $git是最新的分支
    不
    
    似乎起作用了⌐■-■
    (⌐■_■)


    我如何在这个git存储库中列出比我的分支更新的所有提交(在任何分支中),而不切换到当前分支

    如果你的意思是某个日期较新,这是一个很难解决的问题。在最坏的情况下,你必须探索整个DAG,因为Git并不禁止父母比他们的孩子有更近的日期。如果你的意思是拓扑顺序,那么就容易多了:

    git log --branches HEAD..
    

    --branchs
    标志将输出限制为可从至少一个
    引用/heads
    访问的提交)当然,您可以通过添加诸如
    --oneline
    --decoration
    等装饰性标志来调整该命令的输出,您是指其提示是最近(容易)的分支,还是最后创建的分支(更难)?我是指包含“最新提交”的分支,而不是其创建日期。Ba