2

我有一个 NodeGit 存储库,repo. 此存储库在已跟踪和未跟踪的文件和目录中都有一些本地更改。如何清理这个存储库,效果与git clean -f -d命令相同,以便之后本地更改不再存在?

谢谢您的帮助。

4

1 回答 1

3

NodeGit 是 libgit2 的包装器,它是一个较低级别的库。它不像大多数 Git 命令那样设计用于处理大量复杂的任务,因此没有内置的清理技术。这不仅仅是 NodeGit:libgit2 也缺少任何内置的清理功能。

然而,它是可能实现的,尽管有一些困难。libgit2 提供了一种获取文件状态的方法,您可以包含未跟踪的文件并递归到被忽略的目录中。未跟踪的文件将在工作树中标记为新文件,但没有为它们设置任何索引标志。然后可以删除它们。

这并不能解决清理空目录的问题,因此您必须手动跟踪哪些目录有未跟踪的文件,然后在事后检查并确定目录是否为空,如果是,则将其删除。如果您还想删除空目录,那么您必须自己动手,因为状态代码不枚举目录,只枚举文件。

如果这看起来工作量很大,那么,确实如此。 git clean在引擎盖下做了相当多的工作,所以手工做一定很复杂。

于 2020-09-06T04:02:32.943 回答