【发布时间】:2019-02-18 04:16:25
【问题描述】:
在部署中使用 Git 时,通常需要了解提交历史和关系。当 repo 较小时,没有问题。但是对于大型存储库要获得完整的历史记录,需要获取所有对象。此操作会占用大量带宽并花费大量时间。
那么,问题来了:
需要在不获取内容的情况下处理大型 Git 存储库的历史记录。
如果能够获取几 MB 并在无法签出内容的情况下使用 git log、git rev-parse、git rev-list 等,那就太好了。
想法1。具有来自 git log 的原始输出的专用分支 _metainfo
将git log 的输出存储到专用分支。
但是这种方法需要自己的解析器。
这适用于非常简单的任务。
想法2。修剪文件内容
git filter-branch tree-filter "echo >**"(伪代码)。这将更改提交的哈希,但存储提交消息和日期。并且可以将旧的提交哈希添加到过滤的提交消息中。
更新。
谢谢你的回答。我已经阅读了可能的重复并了解:“目前没有解决方案”。在这项研究中,我将我的第一个想法实现为一个简单的解决方法,并将第二个想法实现为一个工作解决方案的概念。它们都给出了半可用的结果。如果社区感兴趣,我会美化并发布它们。
【问题讨论】:
-
@OliverRadini,Q 的答案不满足这个要求。
-
@kyb 我相信是的;引用该问题的答案:“没有本地(克隆)副本,无法使用 git log 查看远程日志”。唯一的建议是,如果您有权访问 .git 目录,则可以从那里提取日志
标签: git git-log git-filter-branch