Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅获取远程git分支的子集或仅在gitk中显示它们的子集_Git - Fatal编程技术网

仅获取远程git分支的子集或仅在gitk中显示它们的子集

仅获取远程git分支的子集或仅在gitk中显示它们的子集,git,Git,如果其他开发人员在提交到主干之前将其本地分支推送到共享的远程存储库(以共享、备份或集中存储它们以便从多台计算机访问),是否有一种方法可以让我轻松地只获取自己的分支或有选择地删除对其他远程分支的本地引用?如果没有,是否有一种方法可以在gitk中只显示远程分支的子集,这样我就可以看到我的分支相对于我的远程分支的位置,而不会让其他所有人的远程分支把图形弄得乱七八糟?这里有一种只从远程分支获取特定分支的方法: 从远程获取的引用(包括分支)由配置选项remote..fetch控制。例如,您的remote.

如果其他开发人员在提交到主干之前将其本地分支推送到共享的远程存储库(以共享、备份或集中存储它们以便从多台计算机访问),是否有一种方法可以让我轻松地只获取自己的分支或有选择地删除对其他远程分支的本地引用?如果没有,是否有一种方法可以在gitk中只显示远程分支的子集,这样我就可以看到我的分支相对于我的远程分支的位置,而不会让其他所有人的远程分支把图形弄得乱七八糟?

这里有一种只从远程分支获取特定分支的方法:

从远程获取的引用(包括分支)由配置选项
remote..fetch
控制。例如,您的
remote.origin.fetch
可能是refspec:

+refs/heads/*:refs/remotes/origin/*
。。。这意味着在远程存储库中的
refs/heads/
下获取所有ref的名称,并在本地存储库中的
refs/remotes/origin/
下使其可用。(
+
意味着进行强制更新,因此即使更新不会很快,也可以更新远程跟踪分支。)

您可以改为列出多个refspec,这些refspec指定要获取的特定分支,例如,使用以下命令更改此参数:

 git config remote.origin.fetch +refs/heads/master:refs/remotes/origin/master
 git config --add remote.origin.fetch +refs/heads/blah:refs/remotes/origin/blah
。。。然后下次只取
master
blah

当然,您已经在本地拥有了许多远程跟踪分支,
gitk
仍将显示这些分支。您可以删除每个您不感兴趣的项目:

git branch -r -d origin/uninteresting

我希望我对你的标题做了一点小小的修改没关系,因为git中的“remote”与remote中的分支是一个不同的概念-你的问题是关于后者的,标题有点误导。在git上下文中谈论“trunk”有点奇怪,不是吗?与其分别删除每个远程跟踪分支,您应该能够执行
git remote prune origin
,我认为这将考虑fetchspecsconsideration@knittl:文档中没有这样的建议,我刚刚在git 1.7.0.4中用
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master
对其进行了测试,它似乎没有删除它们……好的,我这边的错误假设:)如果这被认为是预期行为,那将很有趣,谢谢!为了澄清这一点,除了以下形式的单独调用之外,没有任何内置方法可以修剪远程中我自己的旧分支:
git push origin:mybranchs/branchA
(不包括使用shell功能,例如
git push origin:mybranchs/{branchA,branchB}
),是这样吗?@jonderry:如果您愿意,您可以在一个命令行中完成所有操作,例如:
git push origin:experiment1:experiment2
-我认为它不会比这更简单,因为它无法自动知道您要删除哪些分支。