4

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

4

3 回答 3

9

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

$生成内容| git hash-object -t blob -w --stdin
$ git update-index --cacheinfo 100644 sha1 路径
  • sha1是先前命令的结果。
  • 100644: 表示普通文件。

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

于 2011-04-04T22:01:38.737 回答
2

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

于 2011-04-04T11:58:25.740 回答
1

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

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

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

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

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

" --cacheinfo" 选项的不同之处在于它需要三个选项参数。
带有可选参数的选项已经够糟糕了。
具有多个参数的选项简直是疯了。

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


注意:只有 git 2.0.X/2.1 (Q3 2014) 处理 NULL 情况:
参见Jeff King ( )commit c8e1ee4peff

在没有任何进一步参数的情况下运行“ git update-index --cacheinfo”会导致段错误而不是错误消息。提交 ec160ae (update-index: teaching --cacheinfoa new syntax " mode,sha1,path", 2014-03-23) 添加了检查参数格式的代码,但忘记处理 NULL 情况。

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

于 2014-06-14T20:01:33.213 回答