当git fetch --all时,如何忽略被复制到本地git的一些分支/标签

时间:2014-10-29 06:20:13

标签: git git-branch git-fetch

我的git中添加了许多遥控器。每个远程程序都是一个开发人员的存储库每天我fetch --all看到他们创建的任何新分支都可以随时查看。

但是,开发人员可以将“私有”分支推送到远程。比如,所有以下划线前缀命名的分支都没有准备好进行审核,而其他分支已准备好进行审核。

在执行git fetch --all时,我的git图(由/libexec/git-core/git-gui)将看到所有分支,无论它们是否具有下划线前缀。它使图表变得复杂。

我希望git fetch忽略那些_XXXX分支被下载到我的本地git。所以,当我查看git图时,它就像:

  • 显示分支: RemoteA/Branch1RemoteB/Branch1RemoteB/Branch2
  • 忽略分支: RemoteA/_Branch2RemoteB/_Branch3

我该怎么做?

4 个答案:

答案 0 :(得分:5)

而不是使用' _'命名约定,您可以使用命名空间,在origin/review/Branch1git push Branch1:review/Branch1)中推送分支 (在in that answer中命名为" group" that answer或"层次结构分支名称(带斜杠的分支名称)

这样,你只需要获取"评论'名称空间:

git fetch +refs/heads/review/*:refs/remotes/origin/review/*

唯一的另一个选择是脚本,它将:

答案 1 :(得分:4)

使用特殊的"评论"扩展VonC's answer文件夹 1 ,您可以为同事修改.git/config个条目'遥控器。这是the relevant documentation.

曾经的地方

[remote "fred"]
    url = something.git
    fetch = +refs/heads/*:refs/remotes/fred/*

您可以将其更改为

[remote "fred"]
    url = something.git
    fetch = +refs/heads/review/*:refs/remotes/fred/review/*
    fetch = +refs/heads/other_pattern/*:refs/remotes/fred/other_pattern/*
    fetch = +refs/heads/specific_branch:refs/remotes/fred/specific_branch

执行此操作后,您可能必须清除对已经提取的引用的引用,但未来的git fetch --allgit fetch fred将不会更新您指定的模式之外的任何内容。

1 或者您需要的许多特殊或有趣的文件夹/分支。

答案 2 :(得分:2)

您可以使用别名一步完成。将其添加到您的~/.gitconfig文件中:

[alias]
    fall = !sh -c 'git fetch --all && git branch -r | sed /HEAD/d | grep /_ | xargs git branch -dr' --

然后只说git fall。它将删除包含/_的所有远程分支。

您可以观察shell命令的别名的复杂性。 : - /

答案 3 :(得分:-1)

您可以使用ignore-refs选项:

git fetch --ignore-refs branch123