Ash*_*hir 5 git git-diff-tree git-plumbing
我使用以下Git命令
git diff-tree --no-commit-id --name-only -r <SHA>
Run Code Online (Sandbox Code Playgroud)
获取已更改文件的列表.
不幸的是,列表没有指定每个文件的更改类型:添加,修改或删除等等
如何在特定提交的给定SHA中显示更改列表[更改类型,文件名].
用--name-status而不是--name-only
git diff-tree --no-commit-id --name-status -r <SHA>
Run Code Online (Sandbox Code Playgroud)
这将显示状态字母为(从man提取)的文件名: 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).
小智 5
虽然Joe 的回答指出您可以使用--name-statuswith 标志git diff-tree,但您也可以使用相同的标志 with git diff。
要获取更改的文件及其特定提交的状态,您可以使用该提交的 sha id 和 commit-parent 说明符,就像这样
git diff --name-status <sha>^ <sha>
Run Code Online (Sandbox Code Playgroud)
修订说明符<sha>^表示 commit 的第一个父级<sha>,因此使用 withgit diff有效地为您提供在提交与其父级之间所做的所有更改。
你也可以使用
git diff --name-status <sha>~ <sha>
Run Code Online (Sandbox Code Playgroud)
其中<sha>~也表示 commit 的第一个父级<sha>。