是否可以将文件添加/提交到本地裸Git仓库的索引?

时间:2011-04-04 11:48:58

标签: git grit

我正在搞乱Ruby Grit gem ......看看我如何使用它来管理/访问我正在运行的Gitosis服务器。有谁知道是否有可能将文件添加/提交到本地裸仓库,或者我是否需要设置本地“正常”仓库并使用SSH将其推送到本地主机上的裸仓库?

3 个答案:

答案 0 :(得分:7)

您应该可以使用低级管道命令执行此操作:

$ generate_contents | git hash-object -t blob -w --stdin
$ git update-index --cacheinfo 100644 sha1 path

其中 sha1 是上一个命令的结果。

但是裸存储库仅用于推入或获取。裸存储库根本不需要索引!

答案 1 :(得分:2)

您需要一个工作树来将文件添加到索引并提交它 虽然有可能通过管道命令直接更改裸git仓库的内部内容,但我真的建议设置一个普通的克隆,修改它并将生成的提交推回到裸仓库。

答案 2 :(得分:0)

由于git update-index --add --cachinfo对于向索引添加文件很重要,请注意cacheinfo具有新语法:

--cacheinfo <mode>,<object>,<path>
--cacheinfo <mode> <object> <path>
  

直接将指定的信息插入索引   为了向后兼容,您还可以将这三个参数作为三个单独的参数提供,但鼓励新用户使用单参数表单

请参阅commit ec160ae Junio C Hamano (gitster),2014年3月,Git 2.0 +的一部分:

  

update-index:教--cacheinfo新语法&#34; mode,sha1,path&#34;

     

&#34; --cacheinfo&#34;选项很不寻常,因为它需要三个选项参数   带有可选参数的选项非常糟糕   具有多个参数的选项简直就是疯了。

     

引入一种新语法,将这三种内容与逗号连接在一起,这使得命令行语法在子命令之间更加统一,同时保留了向后兼容性的传统语法。


注意:只有git 2.0.X / 2.1(2014年第3季度)处理NULL情况:
commit c8e1ee4Jeff King (peff)

  

跑步&#34; git update-index --cacheinfo&#34;没有任何进一步的参数导致段错误而不是错误消息。 Commit ec160ae(update-index:teach --cacheinfo一种新语法&#34; mode,sha1,path&#34;,2014-03-23)添加了代码来检查参数的格式,但是忘了处理NULL情况。

     

从解析器返回错误就足够了,因为我们将其视为旧式&#34; --cacheinfo <mode> <sha1> <path>&#34;并抱怨我们只有少于3个参数可供阅读。