2011-04-04 35 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個。

相關問題