我正在搞乱Ruby Grit gem ......看看我如何使用它来管理/访问我正在运行的Gitosis服务器。有谁知道是否有可能将文件添加/提交到本地裸仓库,或者我是否需要设置本地“正常”仓库并使用SSH将其推送到本地主机上的裸仓库?
答案 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 c8e1ee4见Jeff 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个参数可供阅读。