4

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

例如,考虑这两种情况:

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

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

4

1 回答 1

2

我不了解 Grit,但是使用 Git 本身,您可以使用 index.js 来做到这一点。

假设要存储在 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
于 2012-10-19T09:55:02.083 回答