如何使用Git bundle create只获取前几次提交

时间:2017-07-06 17:03:08

标签: git github repository bundle gitlab

我有一个git repo,我想使用git bundle命令只获取一部分repo。

让我们说这个回购有10个提交,但我只想抓住前3个?也许在以后的时间抢到下一个3?等等

如何利用git bundle命令执行此操作?

随意填写我可能没有提供的其他细节的空白,这可能对您有用。

1 个答案:

答案 0 :(得分:1)

更新 - 合并有关捆绑包限制的信息。 tl; dr - 你必须在束头上有一个参考

要包含在bundle中的提交是使用与用于指定在log命令(以及其他命令)中要查看的内容相同的语法指定的,但必须使用命名引用(分支)或标签)表明应包括的内容。因此,对于您的示例(捆绑前3个提交,然后是后续3个,来自具有10个提交的仓库):

你有一个回购

A -- B -- C -- D -- E -- F -- G -- H -- I -- J <--(master)

然后你说

git bundle create a_to_c.bundle C

其中C指向C的引用(分支或标记)。后

git bundle create d_to_f.bundle C..F

在这种情况下,C可能是提交C的SHA ID(或该ID的明确前缀),或者它可能仍然是re;但是F必须是指向提交F的ref(标记或分支)。

此语法适用于您希望包含在一个提交中可以访问的内容(在此示例中为F,但可从另一个提交内容({{ 1}})。等效命令是

C

显示了更通用的语法,您可以轻松添加要包含或排除的多个提交。

您在评论中注意到,您可以使用标记,但不能使用SHA ID。我忘记了 - 但有人以不幸的不清楚的形式向我指出 - 是一个捆绑包不能包含悬空提交。 bundle中的每个提交都必须可以从bundle中的ref访问。我想这可以防止创建难以访问的悬空对象 - 在任何情况下都可以立即使用gc - 将捆绑包应用到另一个仓库时。