pal*_*ain 6 git git-fetch git-branch
我有很多遥控器添加到我的git.每个远程程序都是一个开发人员的存储库 每天我都会fetch --all看到他们创建的任何新分支都可以查看.
但是,开发人员可以将"私有"分支推送到远程.比如,所有以下划线前缀命名的分支都没有准备好进行审核,而其他分支已准备好进行审核.
在执行此操作时git fetch --all,我的git图(by /libexec/git-core/git-gui)将看到所有分支,无论它们是否具有下划线前缀.它使图表复杂化.
我想git fetch忽略那些_XXXX分支被下载到我的本地git.所以当我查看git图时,它就像:
RemoteA/Branch1,RemoteB/Branch1,RemoteB/Branch2RemoteA/_Branch2,RemoteB/_Branch3 我怎样才能做到这一点?
Mic*_*ael 10
随着负refspecs,1 Git中添加V2.29,你可以实现你的原意,而无需改变你的同事的习惯。
对于每个同事的遥控器,添加一个否定^的_refspec (即以 为前缀)以排除 -前缀的分支。这是从单元测试.git/config和负面模式的单元测试中松散地改编的。有关“Fred 的”遥控器,请参阅下面代码块中的最后一行。
[remote "fred"]
url = something.git
fetch = +refs/heads/*:refs/remotes/fred/*
fetch = ^refs/heads/_*
Run Code Online (Sandbox Code Playgroud)
您有两个选项可以fred在命令行上进行设置:
git config --add remote.fred.fetch '^refs/heads/_*'git remote set-branches --add fred '^refs/heads/_*'使用特殊的“评论”文件夹扩展VonC 的出色答案,2您可以修改.git/config同事遥控器的条目。这是相关的文档。
曾经在哪里
[remote "fred"]
url = something.git
fetch = +refs/heads/*:refs/remotes/fred/*
Run Code Online (Sandbox Code Playgroud)
你可以把它改成
[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
Run Code Online (Sandbox Code Playgroud)
这样做之后,您可能必须清除对已获取的 refs 的引用,但 future git fetch --alls 或git fetch freds 不会更新您指定的模式之外的任何内容。
1截至 2021 年 8 月 30 日,仍然没有关于负面 refspecs 的文档,因此最好查看Git 的历史记录。
2或者您需要的任意数量的特殊或有趣的文件夹/分支。
而不是使用的" _"命名约定,你可以使用命名空间,推动分公司origin/review/Branch1(git push Branch1:review/Branch1)
("第一组" 在这个问题的答案,或"分层分支名称(分支名以斜杠)这个答案)
这样,您只需要获取"review"命名空间中的内容:
git fetch +refs/heads/review/*:refs/remotes/origin/review/*
Run Code Online (Sandbox Code Playgroud)
唯一的另一种选择是脚本,它将:
git ls-remote origin