github上传文件功能如何工作?

时间:2018-08-15 23:41:33

标签: git github

我前段时间碰到一个有关reduit帖子的内容,关于github upload a file功能实际上并未克隆项目,而是通过低级api修改了git历史记录。我再也找不到该reddit帖子:-(

我有类似的要求将文件添加并推送到git repo,但是克隆整个repo的成本很高(文件很大)。因此,我正在寻找要使用的低级git api命令,以便将文件添加到存储库并在不克隆的情况下进行推送。

仅供参考-浅克隆对我来说不起作用,因为所有大文件都位于项目根目录中。

还有其他类似的问题,但没有解决方案-每个人都说这是不可能的。 考虑到github做到了,应该有办法。

1 个答案:

答案 0 :(得分:1)

GitHub具有存储库,因此在GitHub上,只需提取最新提交,编写文件,更新索引并进行新提交即可。 1 您可以执行相同的操作拥有整个存储库的任何服务器上的事情:接受文件,签出所需的提交,添加文件,然后进行新的提交。


1 实际上,您真正需要做的就是使用git read-tree将提交读入索引文件,使用git hash-object -w编写blob对象,然后更新索引并使用git write-treegit commit-treegit update-ref插入新的提交。这些管道命令不需要单独的工作树目录。但是,如果您有工作树目录,则更容易,因为这会使用户界面命令起作用。