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

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

例如,考虑以下两种情况:

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

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

最佳答案 我不知道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
点赞