【问题标题】:Git - List all files last committed in master branchGit - 列出最后在主分支中提交的所有文件
【发布时间】:2021-09-28 20:33:29
【问题描述】:

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

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

我尝试了什么: 从我的 .git 目录所在的目录中运行这些命令用于项目。 git show --name-only 和 git 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 中的完整路径。

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

【问题讨论】:

  • 它显示了什么?你在期待什么?
  • 更新问题
  • @AjayKumar :如果从您的master 分支运行:git log --graph --oneline --name-status --first-parent,您是否看到您期望分布在多个提交中的 30 多个文件的列表?

标签: git github git-commit


【解决方案1】:

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

git diff --name-only HEAD~

或者

git diff --name-only master~ master

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

【讨论】:

  • 我同意你的回答,git show --first-parent --name-only master 应该也可以
  • 哦,有道理。很棒的提示!...实际上,您应该将其作为单独的答案提供。我会赞成它
  • 我都试过了,根据这里的评论和这个答案,但只在项目根级别显示两个文件。虽然我期待(而且我知道)30 多个文件。我怎样才能让它递归?
  • 但是递归是什么意思?您要问的是上次修订版和当前修订版之间的更改... IOW 在“master”分支的最后一次提交中新/更改的所有文件的列表(如果当然,你站在主人身上......如果你在其他地方,请使用我提供的master~ master),这就是你所要求的。这 30 多个文件在哪里修改?也许在问题中添加一点git log --oneline --graph master 可以帮助我们理解您的意思。
  • 不太确定是否有帮助。我从项目所在的 .git 目录所在的目录运行这些命令。对不起,我对 git 命令的了解有限。
【解决方案2】:

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

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

另一方面,你说:

我正在尝试获取“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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-01
    • 2023-03-27
    • 2014-02-22
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2017-11-13
    相关资源
    最近更新 更多