HY!
有没有办法获取存储在git包中的所有提交的列表而不首先克隆它?
获取头脑很容易,但我找不到一种方法来完整注销它。
答案 0 :(得分:7)
如果没有编写一些专门的软件来浏览捆绑包中包含的包,那是不可能的。如果使用负引用创建了bundle,则它可能包含仅使用bundle中的对象无法解析的增量(包中嵌入的包可能很薄)。
克隆bundle(至少是一个裸克隆)将拆分ref并对包进行索引,生成标准git命令可以使用的格式,因此这是最简单的方法(在集成工作方面)它
在合并之前你可以做“预览”捆绑的一件事就是简单地将它添加为远程仓库,然后你可以从中获取并访问跟踪引用。如下所示:
git remote add bundle /path/to/bundle
git remote update bundle
现在您可以执行gitk master...bundle/master
等来比较捆绑中的分支与本地仓库的比较,最后git pull bundle master
将其合并。
完成后,只需使用git remote rm bundle
答案 1 :(得分:1)
按照araqnid的answer的建议,从捆绑包中提取内容仍然是最简单的解决方案。
其他所有内容(意味着无需从捆绑软件中进行克隆/获取)都将涉及对git bundle
格式的解码。
使用Git 2.25.1(2020年2月)更容易,因为已记录了包格式的技术细节。
请参见commit 7378ec9的Masaya Suzuki (draftcode
)(2020年2月7日)。
(由Junio C Hamano -- gitster
--在commit e99c325中合并,2020年2月12日)
See discussion。
doc
:描述Git捆绑包格式签名人:铃木雅也
未记录捆绑软件格式。用ABNF描述格式,并解释每个部分的含义。
({ABNF: Augmented Backus–Naur form,基于metalanguage(BNF)的Backus–Naur form,但由其自身的语法和派生规则组成)
有关更多信息,请参见Documentation/technical/bundle-format.txt
bundle = signature *prerequisite *reference LF pack
signature = "# v2 git bundle" LF
prerequisite = "-" obj-id SP comment LF
comment = *CHAR
reference = obj-id SP refname LF
pack = ... ; packfile