【问题标题】:How do I fetch/pull multiple branches matching a wildcard string?如何获取/拉取与通配符字符串匹配的多个分支?
【发布时间】:2015-03-22 19:58:35
【问题描述】:

目标: 我有几个由相同规则管理的存储库。我想创建一个 git 别名来帮助获取和/或仅提取相关分支,而不获取与我不关心的工作相关的许多远程分支的信息。我希望最终结果能保持我的日志输出干净且易于管理,同时还能提供我的相关信息。

细节: 我想要一个命令来拉取“master”和任何以“development/”开头的分支(即 development/2.0 ...)。我想避免获取其他几个分支。这些通常采用以“integration/”或“personal/”开头的形式。

我得到了什么: 由于“git fetch --help”中的评论,我现在知道 git Porcelain 是什么,这是我的使用方法:

git fetch origin master:master -u

这甚至可以获取 master 和 1 个开发分支:

git fetch origin master:master development/2.0:development/2.0 -u

但是我在将其扩展到每个开发分支而不单独列出它们时遇到了麻烦(这似乎什么也没做):

git fetch origin development/*:development/* -u

提前感谢您的帮助!

【问题讨论】:

  • development/* 的东西应该工作,前提是你的命令解释器不会吃掉或以其他方式破坏星号。请注意,通常的本地分支名称是“远程跟踪”分支refs/remotes/<remote>/...,而不是您的本地分支,所以看起来有点奇怪。

标签: git git-pull git-fetch


【解决方案1】:

我不知道您可以在命令行上执行此操作,但您可以通过在 git 配置中配置 refspec 来执行此操作。

配置通常看起来像这样。

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = .....

我认为你会想要这样的东西(未经测试)

[remote "origin"]
    fetch = +refs/heads/development/*:refs/remotes/origin/*
    fetch = +refs/heads/master:refs/remotes/origin/*
    url = .....

虽然其中的提取行可能需要更像这些,但我不确定

    fetch = +refs/heads/development/*:refs/remotes/origin/development/*
    fetch = +refs/heads/master:refs/remotes/origin/master

【讨论】:

  • 在我意识到这需要在单独的存储库配置中而不是在我的全局 git 配置中之前,我尝试了几次。 fetch = +refs/heads/development/*:refs/remotes/origin/development/* fetch = +refs/heads/master:refs/remotes/origin/master 正是我想要的。感谢您的快速回复!
  • 删除你说的未经测试的块怎么样?所以下一位读者得到了直截了当的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 2017-04-11
  • 2017-08-09
  • 2020-08-28
  • 2018-04-06
  • 1970-01-01
  • 2019-07-07
相关资源
最近更新 更多