对于Git如何处理远程存储库的初始git clone
,我有些困惑。对于给定的<repo>
URI,我需要为所有分支上的所有提交检索完整的Git补丁(diff)。
当前我正在执行以下操作:
$ git clone <repo>
$ git rev-list --all | xargs git show
然后我要关注的是: Git是否在其索引中获取所有存储库数据(包括来自所有分支的所有提交),还是仅获得master分支的完整历史记录?
换句话说,我的问题是:仅git clone
是否足以获得我需要的“完整”补丁/差异?
更新:<repo>
可能有几个孤立的分支
答案 0 :(得分:0)
git clone
应该复制带有所有分支的整个存储库。
尝试克隆它,然后运行git branch -a
。它应该列出所有分支。
答案 1 :(得分:0)
更新-在对另一个答案的评论中,您要求记录git的行为。那将是git clone
文档(https://git-scm.com/docs/git-clone)。如果这是您实际上要的内容,那么您应该在问题中这样说,而不是将真正的要点掩埋在评论中。也就是说,请记住,对文档的请求是不合时宜的,如果您需要git docs,则可以通过谷歌搜索相关命令来轻松找到它们。
Git是获取索引中的所有存储库数据(包括来自所有分支的所有提交)还是仅获得master分支的完整历史记录?
好吧...
关于您要询问的内容,默认情况下clone
复制所有分支的完整历史记录。您可以使用single-branch
或depth
之类的选项来限制这种行为,但是默认情况下,复制所有内容。
但是,您的术语有点问题。 index
通常是项目的单个快照,代表git commit
记录的内容。 (例外是在合并期间,当它可能存储冲突文件的多个状态时。)它不是存储历史记录的地方,也不是rev-list
所查询的地方。
因此git不会“在索引中获取所有存储库数据”;它获取本地数据库中的数据。
此外,除了所有分支的历史记录之外,可能还有其他默认情况下未获取的其他信息。但是,如果问题仅涉及分支机构及其历史,那么是的,一切都已获取。