如何设置只从远程获取一些分支

时间:2014-06-06 14:30:51

标签: git branch git-config

我在git中有moodle项目,并希望从原来的git存储库不断更新。然而,它有很多活跃的分支,我只需要两个。我可以在gitconfig文件中设置只获取我需要的两个分支而忽略其他分支吗?我有gitcofig文件的这一部分,只是不知道如何正确设置。

[remote "Moodle"]
url = git://git.moodle.org/moodle.git
fetch = +refs/heads/*:refs/remotes/Moodle/*

2 个答案:

答案 0 :(得分:2)

可以限制"远程分支机构"得到更新。只需更改以下行:

fetch = +refs/heads/*:refs/remotes/Moodle/*

改为阅读:

fetch = +refs/heads/branch1:refs/remotes/Moodle/branch1
fetch = +refs/heads/branch2:refs/remotes/Moodle/branch2

(我假设这两个分支名称是branch1branch2;请根据需要替换正确的名称。

然而,作为Christopher suggested,这里的任何节省通常都是微不足道的。 git做什么"在幕后"是转移所有必要的" git对象"一次性(称为"薄包",然后在你的结尾修改为"正常"包装)。

修剪最后更新的分支集可以减少传输的对象数,但是包通常是相当压缩的。如果省略的活动分支包含大量压缩较差的大文件,则可能获得更多。 (但是,如果这些分支被合并回你的分支,那么所有底层对象都会在那时遇到:你现在要保存但稍后付款。)

答案 1 :(得分:-1)

Git是一个分布式版本控制系统,这意味着只要您按定义获取,就可以获得整个存储库,除非您按照torek's answer中描述的方式明确限制它。这是设计的一部分。 &#34;撷取&#34;您理解它的方式(更新本地存储库中的<remote>/<branch>引用),只是改变指针。没有集中版本控制概念的&#34;分支&#34;这里。存储库的每个克隆都是历史记录中任何可访问的完整状态。[1]提取只是保持两个不同存储库同步的一种方式。

换句话说,你不必担心&#34;取其他分支&#34;。你当地人正在做的就是更新对远程状态的了解。

如果您想查看更新内容,请查看.git目录。他们确实是文件:

$ cat .git/refs/remotes/<remote>/<branch>

脚注:

[1]从技术上来说,有很少的克隆&#34;它不包含存储库的整个历史记录,但我在这里忽略它们。我们与日常互动的绝大部分都是完整的存储库。