gpt4 book ai didi

Git:探索远程中的对象

转载 作者:太空狗 更新时间:2023-10-29 13:15:31 24 4
gpt4 key购买 nike

我正在做一些 Git 的高级用法,查询对象以优化我的代码的测试运行,如果以下内容听起来与大多数人对 Git 的用法相去甚远,请多多包涵。

我想做一些类似 git cat-file -p [...] 的事情,除了在远程对象上,而不获取它们。即,我想说,“在远程 origin 上,向我展示提交 A,具体告诉我它的树的 ID 是什么;然后向我展示树的内容( blob 和子树的列表。)”我不需要获取文件的实际内容,只需获取上面的信息。

我知道我可以从远程获取提交到我的本地存储库并在其上使用 git cat-file,但是这将涉及从远程获取提交的所有父级,这可能需要很长时间。我需要快速完成此操作,因为它是在一个程序中完成的,该程序应该每天在许多不同的存储库上运行数百次。

有没有办法在不获取提交的情况下执行上述操作?

最佳答案

我假设您已经确认 git fetch --depth=... 没有按照您的意愿执行。

如果您有 ssh/scp 远程访问权限,您可以简单地获取该提交的单独文件(如果提交作为散列 a1b2c3d4,它存储在内部文件 objects/a1/b2c3d4)。将它放在本地 .git/objects 的同一目录/名称下。然后照常使用本地 git cat-file。从它的输出中,您可以解析树的散列,然后从那里继续,获取单个目标文件直到完成。 git cat-file 不关心任何丢失的位,如果你有一个文件存在的散列,它会很乐意输出它的内容。

为了避免“真正的”本地存储库出现问题,您可以在一个空的存储库中执行此操作,即您刚刚使用 git init tmprepos 或其他任何方式创建的存储库。里面没有其他东西也没什么坏处。

编辑:git 将一些对象存储在包文件中。参见 https://git-scm.com/book/en/v1/Git-Internals-Transfer-Protocols有关如何获取它们的说明。

关于Git:探索远程中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com