将文件添加到裸存储库而不使用克隆或工作空间

时间:2013-10-29 00:13:46

标签: git

拥有一个简单的git存储库,如何在不必创建克隆或具有工作树的情况下提交新文件或修改。

3 个答案:

答案 0 :(得分:2)

事实上,您可以在--bare repo上运行各种git管道命令。但是你需要创建一个树(即使它是一个纯文本文件)某处以便创建一个树,你需要创建文件blob 某处以便添加为了制作那棵树,他们去了仓库,你需要写一个指向那棵树的提交,当你完成所有这些工作时,你也可以在某处创建一个工作目录。

(然后为了方便起见,你可能会把它变成一个非裸克隆,在拥有它们的系统上会尽可能使用硬链接,因此不会占用额外的空间。)

但是,如果您有一个非常特殊的情况,您可以使用git hash-object将一个文件输入到repo中并获取其哈希值,然后git mktree创建一个包含新文件的树(和其他现有文件),然后git commit-tree写一个提交对象,然后git update-ref做一个ref指向它。 (我记得,Pro Git book概述了这个过程。)

答案 1 :(得分:0)

  • 不必克隆就是在本地拥有一个回购,而不是与其他任何人共享。
  • 没有工作树只是有一个空的回购(它可能仍然有一个头)。因此,添加文件和有工作树没有意义,恕我直言。

答案 2 :(得分:0)

如果不克隆存储库,则无法从客户端执行任何操作。对于任何操作,如添加新文件或修改,您应首先克隆存储库。\

唯一的选择是在没有克隆的情况下通过您的GitHub UI进行。