3

我正在尝试创建一个从提交 x 到提交 y 的捆绑文件。正如git bundle 的文档中所指定的那样,参数必须是“ git rev-parse 和 git rev-list ... 可接受的,它指定了特定的对象和对传输的引用”但是,当我运行以下命令时:

git bundle create test.bundle 15b423..6cffeab

我得到错误

error: Refusing to create empty bundle.

然后我验证了提交可以被 rev-list 和 rev-parse 引用:

ana@DESKTOP-K400GGC MINGW64 ~/Projects/TEST1 ((20dc3fd...))
$ git rev-list 15b423b 6cffeab
6cffeabc7e3183fcca8cb8b91eecbf9e0af5a0e7
beb6fb7cfda467433cb2cdab362a25178b1ddf18
458cfcd0064b229f8b416d65405f18732d8c359a
53c90498e13edd32248842b3fd4fb7819041a1d6
ba087013804d4a39b36f3e679548fb45fe9645fb
ad1b1fde27be98b5b09d8e5a43137d16fd6e1840
540da9dea1b816a20be11e5c53b94467449266af
aa64d78ab5c990b047711b9f81fdae13beb27a05
15b423b91a63c403fe0ee0f3365c9846f37f3aa4

ana@DESKTOP-K400GGC MINGW64 ~/Projects/TEST1 ((20dc3fd...))
$ git rev-parse 15b423..6cffeab
6cffeabc7e3183fcca8cb8b91eecbf9e0af5a0e7
^15b423b91a63c403fe0ee0f3365c9846f37f3aa4

为什么它不起作用?如何创建从提交A到提交B的捆绑文件?

4

2 回答 2

3

来自 git bundle 文档(在指定引用下):“git bundle 只会打包 git show-ref 显示的引用:这包括头、标签和远程头。” 因此,如果您向这些提交添加标签,您的命令应该可以工作。

我确实同意您引用的那一行使您的命令看起来像是可以工作的,恕我直言,这不是很清楚。

于 2017-03-01T21:14:25.783 回答
0

使用 Git 2.34(2021 年第四季度),git bundle文档更加清晰,并包含您的用例:

请参阅Ævar Arnfjörð Bjarmason ( ) 的提交 1d9c8da提交 0bb92f3提交 9ab80dd提交 5c8273d(2021 年 7 月 31 日(由Junio C Hamano 合并 -- --提交 f19b275中,2021 年 8 月 24 日)avar
gitster

bundle doc: 详细说明 rev<->ref 限制

签字人:Ævar Arnfjörð Bjarmason

详细说明您不能提供无法解析为“ SPECIFYING REFERENCES”部分中的引用的修订的限制,并附有示例。

git bundle现在在其手册页中包含:

修订必须附有要打包在包中的参考名称。

可以打包多个参考,并且可以指定多个基础。打包的对象是那些不包含在给定基础的联合中的对象。

'git bundle create' 命令使用与git rev-parse --abbrev-ref=loose. 每个基都可以明确指定(例如^master~10),或隐含指定(例如master~10..master, --since=10.days.ago master)。

所有这些简单的情况都可以(假设我们有一个“master”和“next”分支):

----------------
$ git bundle create master.bundle master
$ echo master | git bundle create master.bundle --stdin
$ git bundle create master-and-next.bundle master next
$ (echo master; echo next) | git bundle create master-and-next.bundle --stdin
----------------

这些也是如此(以及相同但省略的--stdin示例):

----------------
$ git bundle create recent-master.bundle master~10..master
$ git bundle create recent-updates.bundle master~10..master next~5..next
----------------

不接受右侧无法解析为引用的修订名称或范围:

----------------
$ git bundle create HEAD.bundle $(git rev-parse HEAD)
fatal: Refusing to create empty bundle.
$ git bundle create master-yesterday.bundle master~10..master~5
fatal: Refusing to create empty bundle.
----------------
于 2021-08-28T15:20:28.237 回答