Git:使用Git管道命令在裸仓库中编辑文件

时间:2012-10-19 06:43:36

标签: git grit

我正在尝试为GIT裸回购创建一个基本的GIT Web UI,它允许编辑(仅)现有文件。

例如,考虑到这两种情况:

  • /dir-a/dir-b/dir-c/a-file.txt
  • /a-file.txt

我如何使用Git低级管道命令来保存编辑?此外,我正在使用Grit,不确定它是否提供了执行此操作的快捷方式。

1 个答案:

答案 0 :(得分:2)

我不知道Grit,但是对于Git本身你可以这样做,使用索引。

我们假设存储在dir-a / dir-b / dir-c / a-file.txt中的新内容在/tmp/new-content.txt中可用。

git read-tree HEAD
newhash=$(git hash-object -w --path=dir-a/dir-b/dir-c/a-file.txt /tmp/new-content.txt)
git update-index --cacheinfo 0644 $newhash dir-a/dir-b/dir-c/a-file.txt
newtree=$(git write-tree)
newcommit=$(git commit-tree $newtree -p HEAD -m 'file editedin a bare repository')
git update-ref HEAD $newcommit