我使用以下Git命令。
git diff-tree --no-commit-id --name-only -r <SHA>
获取更改文件列表。
不幸的是,该列表不指定每个文件的更改类型:添加、修改或删除等等。
如何显示给定SHA的特定提交中更改的列表[更改类型、文件名]。
git diff-tree --no-commit-id --name-only -r <SHA>
获取更改文件列表。
不幸的是,该列表不指定每个文件的更改类型:添加、修改或删除等等。
如何显示给定SHA的特定提交中更改的列表[更改类型、文件名]。
使用--name-status
代替--name-only
git diff-tree --no-commit-id --name-status -r <SHA>
已添加(A),已复制(C),已删除(D),已修改(M),已重命名(R),类型已更改(即常规文件,符号链接,子模块等)(T),未合并(U),未知(X)或其配对已中断(B)。
虽然Joe的回答指出您可以在git diff-tree
中使用--name-status
标志,但您也可以改用相同的标志来代替git diff
。
要获取某个特定提交的更改文件及其状态,只需使用该提交的sha id和提交父级说明符即可,如下所示:
git diff --name-status <sha>^ <sha>
修订说明符<sha>^
表示提交<sha>
的第一个父提交,因此在使用git diff
时,使用该说明符可以有效地获取提交与其父提交之间所做的所有更改。
您也可以使用
git diff --name-status <sha>~ <sha>
“<sha>~”也表示提交“<sha>”的父提交。
git whatchanged
查看最近一次提交
git whatchanged SHA-1
的形式,几乎正确:添加 -1
选项以仅获取该特定提交。 - user743382git log --raw
。 - Samha'git checkout <commit>
git whatchanged -1
感谢hvd的评论和stdcall的回答,
你原来的回答,包括
git whatchanged SHA-1
形式,几乎是正确的:添加-1
选项只获取特定提交。
这是对那些感兴趣的人的解决方案:
git whatchanged <SHA> -1
git diff-tree --no-commit-id -r <SHA>