为远程存储库的所有分支的所有提交检索Git补丁

时间:2018-09-05 11:57:08

标签: git git-diff

对于Git如何处理远程存储库的初始git clone,我有些困惑。对于给定的<repo> URI,我需要为所有分支上的所有提交检索完整的Git补丁(diff)。

当前我正在执行以下操作:

$ git clone <repo>
$ git rev-list --all | xargs git show

然后我要关注的是: Git是否在其索引中获取所有存储库数据(包括来自所有分支的所有提交),还是仅获得master分支的完整历史记录?

换句话说,我的问题是:仅git clone是否足以获得我需要的“完整”补丁/差异?

更新:<repo>可能有几个孤立的分支

2 个答案:

答案 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-branchdepth之类的选项来限制这种行为,但是默认情况下,复制所有内容。

但是,您的术语有点问题。 index通常是项目的单个快照,代表git commit记录的内容。 (例外是在合并期间,当它可能存储冲突文件的多个状态时。)它不是存储历史记录的地方,也不是rev-list所查询的地方。

因此git不会“在索引中获取所有存储库数据”;它获取本地数据库中的数据。

此外,除了所有分支的历史记录之外,可能还有其他默认情况下未获取的其他信息。但是,如果问题仅涉及分支机构及其历史,那么是的,一切都已获取。