gpt4 book ai didi

git status --short : missing "Your branch is ahead of ' origin/master' by 1 commit"

转载 作者:太空狗 更新时间:2023-10-29 13:30:37 25 4
gpt4 key购买 nike

我喜欢在一个简单的脚本中使用 git status --short 来检查是否所有 repo 协议(protocol)都没有改变。

我想知道是否有尚未推送的提交。

查看了git status的帮助,发现没有办法输出这条信息:

Your branch is ahead of origin/master by 1 commit

如果事情没有被推送,并且没有如果一切正常。

我可以使用 git status 并使用 grep 忽略行,但这不是很好的解决方案。


目标:

  • 如果没有做任何更改并且没有丢失任何推送,则不输出任何内容
  • 如果有变化但缺少推送则有简短的输出

最佳答案

“git status”的帮助实际上显示了您可以使用的选项:

-b
--branch
  Show the branch and tracking info even in short-format.

格式在--short模式下是不同的,但它在那里:

$ git status --short --branch## master...origin/heads/master [ahead 2][...]                           ^^^^^^^^^

如果您不关心输出格式,git status --short --branch 在内部运行相当于 git rev-list --left-right @... @^{upstream} 并解释其结果。你可以直接运行 git rev-list。当且仅当当前分支和远程分支不同时,它才会给出输出,方法是为您提供当前分支中但不在远程分支(前面)中的提交,以及远程分支中但不存在的提交不在您当前的分支(后面)中,采用 diff 样式格式。

future :

$ git rev-list --left-right @...@{upstream}<baa782ec4590a91d9835c36ad33f7681e4a859d5<8b6255249bc08e2f14d8b6f31bab83b9c48cb698

后面:

$ git rev-list --left-right @...@{upstream}>0e0140fbf6f903aa7205063eac5b8cf6e268ab3b

两者:

$ git rev-list --left-right @...@{upstream}<a7992ac7127b37d24b00fbecf67156688285be15>0e0140fbf6f903aa7205063eac5b8cf6e268ab3b

您可以选择使用 git log 代替 git rev-list 并使用其常规范式选项(例如 --oneline)来根据您的喜好定制输出格式。

或者如果您不在乎,可以将--left-right @...@{upstream} 更改为@{upstream}..@关于传入的更改,仅关于未推送的更改。

关于git status --short : missing "Your branch is ahead of ' origin/master' by 1 commit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35335706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com