获取已更改文件的列表及其特定Git提交的状态

时间:2014-07-17 12:29:47

标签: git git-diff-tree git-plumbing

我使用以下Git命令

git diff-tree --no-commit-id --name-only -r <SHA>

获取已更改文件的列表。

不幸的是,该列表没有指定每个文件的更改类型:添加,修改或删除...等等

如何在特定提交的给定SHA中显示更改列表[更改类型,文件名]。

5 个答案:

答案 0 :(得分:6)

使用--name-status代替--name-only

git diff-tree --no-commit-id --name-status -r <SHA>

这将显示状态字母为(从男性中提取)的文件名:Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B).

答案 1 :(得分:3)

虽然Joe's answer指出您可以将--name-status标记与git diff-tree一起使用,但您也可以使用与git diff相同的标记。

要获取状态为的更改文件仅用于特定提交,您可以使用commit-parent说明符来使用该提交的sha id,如下所示

git diff --name-status <sha>^ <sha>

修订说明符<sha>^表示提交<sha>的第一个父级,因此将其与git diff一起使用可以有效地提供提交与其父级之间所做的所有更改。 / p>

替代

您也可以使用

git diff --name-status <sha>~ <sha>

其中<sha>~也表示提交<sha>的第一个父级。

文档

答案 2 :(得分:1)

感谢hvd's comment上的stdcall's answer

  

您的原始答案(包括git whatchanged SHA-1表单)几乎是正确的:添加-1选项以仅获取该特定提交。

这是有兴趣的人的解决方案:

git whatchanged <SHA> -1

另一种解决方案是:

git diff-tree --no-commit-id -r <SHA>

答案 3 :(得分:0)

使用

git whatchanged 

查看最后一次提交

答案 4 :(得分:0)

git checkout <commit>
git whatchanged -1