C# 如何将树尝试添加到提交';什么是树木收藏?

C# 如何将树尝试添加到提交';什么是树木收藏?,c#,git,libgit2sharp,C#,Git,Libgit2sharp,如果我有一个空的存储库,并且我想从中添加、编辑和删除文件,那么我如何使用LibGit2Sharp来实现这一点 我看到每个提交都有一个包含TreeEntry对象的树对象。是否可以添加、编辑和删除这些树?如果是,索引是否会反映出这些更改正在等待并需要进行阶段性更改 谢谢 如果我有一个空的存储库,并且我想从中添加、编辑和删除文件,那么我如何使用LibGit2Sharp来实现这一点 裸存储库是一个“服务器端”存储库,从中获取/拉取更改,并将更新推送到其中 它既没有工作目录,也没有索引。因此,不能直接添加

如果我有一个空的存储库,并且我想从中添加、编辑和删除文件,那么我如何使用LibGit2Sharp来实现这一点

我看到每个提交都有一个包含TreeEntry对象的树对象。是否可以添加、编辑和删除这些树?如果是,索引是否会反映出这些更改正在等待并需要进行阶段性更改

谢谢

如果我有一个空的存储库,并且我想从中添加、编辑和删除文件,那么我如何使用LibGit2Sharp来实现这一点

裸存储库是一个“服务器端”存储库,从中获取/拉取更改,并将更新推送到其中

它既没有
工作目录
,也没有
索引
。因此,不能直接添加、编辑或删除文件。您应该在一个“标准”存储库(带有一个工作文件夹)中准备提交,然后将提交推送到一个“裸”中央存储库

注意:一些git管道命令和libgit2低级函数允许您绕过这些限制。然而,这是一个有点高级的工具包,您必须准备好深入了解Git内部,以便找到解决方法:)LibGit2Sharp不会公开这些功能

我看到每个提交都有一个包含TreeEntry对象的树对象。是否可以添加、编辑和删除这些树?如果是,索引是否会反映出这些更改正在等待并需要进行阶段性更改

Commit
Blob
都是只读git对象。您不能将
树尝试
添加到
,也不能修改现有的
提交

git提交修饰符(--amend)可能会让人觉得提交已经更新到位。事实并非如此:整个新提交将作为旧提交的父级的子级重新创建。然后将
头从旧提交移动到新提交

更新 LibGit2Sharp的版本v0.9.0公开了一些低级操作,这些操作现在允许直接与存储库的对象数据库交互,即使是裸数据库

利用这些特性,可以创建blob、树和提交,而不需要索引或工作目录

因此,现在可以加载现有树,在内存中更新它,然后将其保留回对象数据库中。当然,这将创建一个新的树,前一个树将保持不变

一些演示这些特性的单元测试可以在文件中找到

如果我有一个空的存储库,并且我想从中添加、编辑和删除文件,那么我如何使用LibGit2Sharp来实现这一点

裸存储库是一个“服务器端”存储库,从中获取/拉取更改,并将更新推送到其中

它既没有
工作目录
,也没有
索引
。因此,不能直接添加、编辑或删除文件。您应该在一个“标准”存储库(带有一个工作文件夹)中准备提交,然后将提交推送到一个“裸”中央存储库

注意:一些git管道命令和libgit2低级函数允许您绕过这些限制。然而,这是一个有点高级的工具包,您必须准备好深入了解Git内部,以便找到解决方法:)LibGit2Sharp不会公开这些功能

我看到每个提交都有一个包含TreeEntry对象的树对象。是否可以添加、编辑和删除这些树?如果是,索引是否会反映出这些更改正在等待并需要进行阶段性更改

Commit
Blob
都是只读git对象。您不能将
树尝试
添加到
,也不能修改现有的
提交

git提交修饰符(--amend)可能会让人觉得提交已经更新到位。事实并非如此:整个新提交将作为旧提交的父级的子级重新创建。然后将
头从旧提交移动到新提交

更新 LibGit2Sharp的版本v0.9.0公开了一些低级操作,这些操作现在允许直接与存储库的对象数据库交互,即使是裸数据库

利用这些特性,可以创建blob、树和提交,而不需要索引或工作目录

因此,现在可以加载现有树,在内存中更新它,然后将其保留回对象数据库中。当然,这将创建一个新的树,前一个树将保持不变

演示这些特性的一些单元测试可以在文件中找到。

请搜索“计算机科学家的git”以了解DAG(有向无环图)。更改提交、树或对象实际上会创建一个新的提交。你编辑这些东西的想法是错误的。只有当内容发生变化时,您才能创建新的图形。

请通过谷歌“计算机科学家的git”了解DAG(有向无环图)。更改提交、树或对象实际上会创建一个新的提交。你编辑这些东西的想法是错误的。仅当内容发生更改时,才能创建新内容