Git - 列出最后在主分支中提交的所有文件

问题描述

我的问题与此非常相似 - May I list the files of the current commit?

问题陈述:我正在尝试获取在“master”分支的最后一次提交中新增/更改的所有文件的列表。

我尝试过的:从我的项目的 .git 目录所在的目录运行这些命令。 git show --name-onlygit show --name-only master 但未显示预期结果。

它向我展示了这个:

Merge: f733602 4d98b76
Author: Some Name <some.name@company.com>
Date:   Thu Jul 1 11:34:49 2020 -0700

    Merge pull request #28 from secret/my_rqd_files

我期望的是 - 它应该显示所有文件的列表及其在 repo 中的完整路径。

问题:我应该怎么做或我做错了什么?

解决方法

您尝试的很好,但它是一个合并修订版。这有点不同。试试

git diff --name-only HEAD~

git diff --name-only master~ master

我的预感是,鉴于它是一个合并修订,git show 只会显示修订本身中引入的更改,这些更改不是来自正在合并的分支......例如冲突解决之类的事情.... 加上您可能手动引入的其他更改。

,

您误解了提交是什么。一方面你说:

列出所有在主分支最后提交的文件

另一方面你说:

我正在尝试获取在“master”分支的最后一次提交中新增/更改的所有文件的列表。

这是两种完全不同的东西。 Git 中的提交不是一组新的/更改的文件。它是您所有文件的快照。

因此,您可以看到所有在最近的 master 提交中的文件列表:

git ls-tree --name-only --full-name master

但是如果您的目标是查看该提交相对于前一个提交的更改,那么您需要要求 Git 从前一个提交生成 diff :

git diff --name-status master~1 master

这显示了文件的紧凑列表及其状态(即文件是添加 (A) 还是修改 (M))。示例:

% git diff --name-status master~1 master
M   a
A   what

我编辑了文件 a 并添加了文件 what