首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查远程Git上是否存在本地分支

检查远程Git上是否存在本地分支
EN

Stack Overflow用户
提问于 2015-02-27 15:14:32
回答 5查看 10.9K关注 0票数 11

我想看看是否有一个新创建的本地分支存在于遥控器上,并使用一行命令。比如创建一个允许我键入的别名或函数

代码语言:javascript
复制
git remoteExists <branchName>

现在,我手动列出遥控器上的每个分支,并检查我的本地分支是否在那里。这并不像我想的那么简单,因为我们的遥控器有数百个分支,其中许多都有相似的名称。

我经常在不同的事情上转换分支,一次可能是6-7,很难记住我是否已经完成并推动了一个分支,或者我是否还需要完成它。

我搜索并找到了一些方法来做类似于此的事情,但许多方法似乎没有必要的复杂,有没有更简单的方法来做到这一点?

编辑

弄清楚我在做什么。我从一个偏远的分支机构开始,在那里建立一个本地分支机构。我正在改变我当地的分支机构,并在努力。我不想设置上游分支,因为我将不再使用这个分支;处理远程分支的人将查看我的更改并将它们集成到远程版本中。

这样做是可行的:

代码语言:javascript
复制
git diff <branchName> remotes/origin/<branchName>

致命的:模糊的论点‘远程/原产地/TestReadyBranch’:未知的修订或路径不在工作树中。使用“--”将路径与修订分开,例如:“git.-.”

一旦看到这个错误,我就会知道远程上不存在分支。有更干净的方法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-02-27 16:03:08

代码语言:javascript
复制
git fetch origin
git branch -r --contains $mybranch

如果你确信任何的推动来自于这个特殊的回购,你可以省略获取。

票数 14
EN

Stack Overflow用户

发布于 2018-02-23 16:18:33

在本地git文件夹中,您可以这样做。

代码语言:javascript
复制
git checkout

如果没有相应的远程分支,则没有输出。否则,它将打印出本地和远程分支之间的关系(前面、后面、分叉等)。

注: 1.8.3.1不起作用,2.16.2起作用

实际上,我写了一个小工具来查看我所有回复的状态。你可以在github上找到它。如果分支的颜色显示为白色,则表示没有远程分支。

  • 怀特:当地人没有遥控器
  • 绿色:本地和远程相同。
  • 红色:当地人已经和遥控器有分歧了。
  • 紫色:本地领先于遥控器(有利于推送)
  • 黄色:本地在远程后面(有利于合并)

票数 4
EN

Stack Overflow用户

发布于 2015-02-27 15:27:44

要检查本地分支是否有更改与上游跟踪分支相比,可以运行:

代码语言:javascript
复制
git diff @{u}

其中@{u}引用上游分支的名称。来自git-rev-parse(1)手册页:

@{上游},例如船长@{上游},@{u} 分支名称(简写为@{u})的后缀@{上游}引用由分支名称指定的分支设置为在其之上构建的分支(配置为branch..remote和branch..merge)。缺少的分支名称默认为当前的分支名称。

这将输出典型的git diff输出,显示本地分支和上游跟踪分支之间的变化。如果希望将其用作shell命令的一部分(例如,设置提示符或其他内容),则可以添加--quiet

代码语言:javascript
复制
git diff --quiet @{u}

如果存在差异,这将返回一个非零退出代码。例如:

代码语言:javascript
复制
git diff --quiet @{u} || echo "You need to push your changes!"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28768306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档