2011-04-04 73 views

回答

7

你应该能够做到这一点使用低级别管道命令:

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

其中SHA1是一个命令的结果。

但是裸仓库只能用于插入或取出。裸仓库不需要索引!

+0

git update-index返回'致命:未知选项--cache-info'。 git version 1.7.2.5 – NaN 2012-08-11 15:58:03

+1

'git update-index --add --cacheinfo 100644 sha1 path' should work! – NaN 2012-08-12 07:43:59

+0

谢谢@NaN,修正了。 – 2012-08-13 14:18:23

2

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

0

由于git update-index --add --cachinfo是很重要的一个文件添加到索引,注意cacheinfo有一个新的语法:

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

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

commit ec160ae通过Junio C Hamano (gitster),2014年3月,混帐的2.0+部分:

update-index:教--cacheinfo一种新的语法 “mode,sha1,path

的 “--cacheinfo” 选项是不寻常的,因为它需要三个选项参数。
带有可选参数的选项已足够糟糕。
具有多个参数的选项简直是疯了。

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


注:唯一的Git 2.0.X/2.1(Q3 2014)取NULL案件的护理:
commit c8e1ee4通过Jeff King (peff)

运行 “git update-index --cacheinfo” 没有任何进一步的参数导致段错误而不是错误消息。 Commit ec160ae(更新索引:教--cacheinfo一个新的语法“mode,sha1,path”,2014-03-23)添加代码来检查参数的格式,但忘记处理NULL的情况。

从解析器返回一个错误就足够了,因为我们将它视为旧式的“--cacheinfo <mode> <sha1> <path>”,并且抱怨我们读取的参数少于3个。