我前段时间碰到一个有关reduit帖子的内容,关于github upload a file
功能实际上并未克隆项目,而是通过低级api修改了git历史记录。我再也找不到该reddit帖子:-(
我有类似的要求将文件添加并推送到git repo,但是克隆整个repo的成本很高(文件很大)。因此,我正在寻找要使用的低级git api命令,以便将文件添加到存储库并在不克隆的情况下进行推送。
仅供参考-浅克隆对我来说不起作用,因为所有大文件都位于项目根目录中。
还有其他类似的问题,但没有解决方案-每个人都说这是不可能的。 考虑到github做到了,应该有办法。
答案 0 :(得分:1)
GitHub具有存储库,因此在GitHub上,只需提取最新提交,编写文件,更新索引并进行新提交即可。 1 您可以执行相同的操作拥有整个存储库的任何服务器上的事情:接受文件,签出所需的提交,添加文件,然后进行新的提交。
1 实际上,您真正需要做的就是使用git read-tree
将提交读入索引文件,使用git hash-object -w
编写blob对象,然后更新索引并使用git write-tree
,git commit-tree
和git update-ref
插入新的提交。这些管道命令不需要单独的工作树目录。但是,如果您有工作树目录,则更容易,因为这会使用户界面命令起作用。