我需要提交工作目录的当前状态(即存储在文件系统上的文件及其内容)转移到非 checkout 分支。以无状态方式完成此操作非常重要,因为用户可能进行了本地修改或暂存了一些文件。这意味着文件在提交之前不应通过索引暂存。(应用程序的其余部分已经以无状态方式运行。)
实现这一点的一个直接方法是递归地构建Tree
,同时从目录向下,但是我假设这样一个常见的任务很可能已经在Rugged/libgit 2中实现了(例如,Index#add_all
做了非常类似的事情)。
Rugged是否提供了一种从当前工作目录(关于.gitignore
& Co.)创建Tree
对象而不更改索引的方法?
1条答案
按热度按时间tp5buhyn1#
有一种方法可以使临时区域不影响当前索引:使用单独的
GIT_INDEX_FILE
。它是
git
cli的一部分,我猜libgit2
支持它(不过我会让您确认这一点)。然后,您可以使用两个管道命令
write-tree
和commit-tree
来创建一个不是HEAD
后代的提交。下面是一个使用git cli的例子: