获取受提交影响的文件和目录

Get files and directories affected by commit

我想获取受特定提交影响的文件和目录列表。我在获取提交本身方面没有问题,但我不知道如何获取受影响的文件和目录。

为了清楚起见,我需要这样的东西: 文件 x - 已删除 文件 y - 添加 文件 z - 已修改

您正在寻找 git diff

libgit2 中存在相同的功能,它的文档是 here

如果您正在分析较旧的提交,"git diff [commit1] [commitAfterCommit1]" 将为您提供第二次提交对第一次提交所做更改的列表。您可以修剪此输出以使自己只获得更改后的文件名。

Git 是 snapshot-based;每个提交都包含文件及其状态的完整列表。 "affected" 文件的任何概念都需要另一个提交来与之进行比较。这通常是针对其 parents 完成的,这似乎是您要问的问题。您可以使用 git_diff 系列函数找出两次提交(或更准确地说,它们的树)之间哪些文件不同。

您可以在 examples listing for libgit2. There is also a more general annotated diff example. The second link also shows how to list individual files as well as their contents, if you need that. Check the reference 中找到执行此操作的示例,以获取用于处理差异的可用函数的完整列表。

请注意,这不会单独为您提供受影响的目录,因为 Git 不跟踪目录,而仅跟踪文件。