Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git状态--简短:缺少“您的分支比'origin/master'提前1次提交”_Git - Fatal编程技术网

git状态--简短:缺少“您的分支比'origin/master'提前1次提交”

git状态--简短:缺少“您的分支比'origin/master'提前1次提交”,git,Git,我喜欢在一个简单的脚本中使用git status-short来检查 所有回购协议不变 我想知道是否有尚未推送的提交 我检查了git status的帮助,发现无法输出此消息: Your branch is ahead of origin/master by 1 commit 如果事情没有进展,如果一切正常,什么都没有 我可以使用git status并通过grep忽略行,但这不是一个好的解决方案 目标: 如果未进行任何更改且未缺少推送,则不输出任何内容 如果存在更改且缺少推送,则简要输出 git

我喜欢在一个简单的脚本中使用git status-short来检查 所有回购协议不变

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

我检查了git status的帮助,发现无法输出此消息:

Your branch is ahead of origin/master by 1 commit
如果事情没有进展,如果一切正常,什么都没有

我可以使用git status并通过grep忽略行,但这不是一个好的解决方案

目标: 如果未进行任何更改且未缺少推送,则不输出任何内容 如果存在更改且缺少推送,则简要输出
git status的帮助实际上显示了您可以使用的选项:

-b -分支机构 显示分支和跟踪信息,即使是简短格式

在-short模式下格式不同,但它存在:

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

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

您可以选择使用git log而不是git rev list,并使用它的常规格式选项(如-oneline)根据您的喜好定制输出格式


或者您可以将-left-right@…@{upstream}更改为just@{upstream}.@如果您不关心传入的更改,只关心未推送的更改。

这是因为您的本地分支未配置为跟踪匹配的远程分支

对于新手来说,这有点违反直觉,但背景是你可能有几个遥控器,比如你与之通信的源设备,这些通信模式可能很复杂

您可以选择显式地将本地分支标记为跟踪单个远程分支,一旦完成,某些Git命令将开始提示您这两个链接分支的历史关系

要设置本地分支foo跟踪远程分支原点/foo,请使用

git checkout foo
git branch --set-upstream-to origin/foo
您可以使用-u而不是-set-upstream

还有一个更老、更难使用的-track命令行选项:

git branch --track foo origin/foo
请注意,在这种情况下,该命令要求显式拼写本地分支的名称

有其他方法可以将分支轨迹设置为远程分支:

推送:

git push -u foo origin
将foo推送到origin,同时将其设置为跟踪origin/foo

使用快捷方式命令进行初始创建时:

git checkout origin/foo
将创建一个本地分支foo,指向相同的commit origin/foo,并立即设置跟踪信息


为了获得更好的结果,请熟悉Git中的概念。

@Damodaran yes Git log origin/master..HEAD适用于问题中未被推送的提交人部分。结尾的三点是误导性的;因为他要求简短的输出。我测试了这个,只得到了你指定的线路。在显示[…]的地方还可以显示什么?@ChrisMaes未提交更改的文件名将显示在那里,即使在-short模式下也是如此。是的,这会显示[ahead 2],但不幸的是,即使所有内容都没有更改,它也会输出master。这个问题有一个限制,即如果没有更改,就不会有输出发生。@guettli那么我认为git status无法做到这一点。对答案进行编辑以提供备选答案。注意:您可能希望将其与git status-short结合使用,而不使用-branch,以获取有关未提交更改的信息。@hvd ok。我可以给git打两次电话,没问题。非常感谢。
git push -u foo origin
git checkout origin/foo