我想看看是否有一个新创建的本地分支存在于遥控器上,并使用一行命令。比如创建一个允许我键入的别名或函数
git remoteExists <branchName>现在,我手动列出遥控器上的每个分支,并检查我的本地分支是否在那里。这并不像我想的那么简单,因为我们的遥控器有数百个分支,其中许多都有相似的名称。
我经常在不同的事情上转换分支,一次可能是6-7,很难记住我是否已经完成并推动了一个分支,或者我是否还需要完成它。
我搜索并找到了一些方法来做类似于此的事情,但许多方法似乎没有必要的复杂,有没有更简单的方法来做到这一点?
编辑
弄清楚我在做什么。我从一个偏远的分支机构开始,在那里建立一个本地分支机构。我正在改变我当地的分支机构,并在努力。我不想设置上游分支,因为我将不再使用这个分支;处理远程分支的人将查看我的更改并将它们集成到远程版本中。
这样做是可行的:
git diff <branchName> remotes/origin/<branchName>致命的:模糊的论点‘远程/原产地/TestReadyBranch’:未知的修订或路径不在工作树中。使用“--”将路径与修订分开,例如:“git.-.”
一旦看到这个错误,我就会知道远程上不存在分支。有更干净的方法吗?
发布于 2015-02-27 16:03:08
git fetch origin
git branch -r --contains $mybranch如果你确信任何的推动来自于这个特殊的回购,你可以省略获取。
发布于 2018-02-23 16:18:33
在本地git文件夹中,您可以这样做。
git checkout如果没有相应的远程分支,则没有输出。否则,它将打印出本地和远程分支之间的关系(前面、后面、分叉等)。
注: 1.8.3.1不起作用,2.16.2起作用
实际上,我写了一个小工具来查看我所有回复的状态。你可以在github上找到它。如果分支的颜色显示为白色,则表示没有远程分支。

发布于 2015-02-27 15:27:44
要检查本地分支是否有更改与上游跟踪分支相比,可以运行:
git diff @{u}其中@{u}引用上游分支的名称。来自git-rev-parse(1)手册页:
@{上游},例如船长@{上游},@{u} 分支名称(简写为@{u})的后缀@{上游}引用由分支名称指定的分支设置为在其之上构建的分支(配置为branch..remote和branch..merge)。缺少的分支名称默认为当前的分支名称。
这将输出典型的git diff输出,显示本地分支和上游跟踪分支之间的变化。如果希望将其用作shell命令的一部分(例如,设置提示符或其他内容),则可以添加--quiet
git diff --quiet @{u}如果存在差异,这将返回一个非零退出代码。例如:
git diff --quiet @{u} || echo "You need to push your changes!"https://stackoverflow.com/questions/28768306
复制相似问题