如何找到提交给 git 分支的文件列表?

Posted

技术标签:

【中文标题】如何找到提交给 git 分支的文件列表?【英文标题】:how do I find a list of files committed to a git branch? 【发布时间】:2012-02-16 09:23:24 【问题描述】:

如何列出我提交到特定分支的所有文件?我已经向一个分支提交了大约 40 多个文件,我需要找到文件名,因为我正在尝试调试一些东西,当我不记得文件名时很难做到。

git log 只给了我一个很长的提交列表,而不是实际的文件。

【问题讨论】:

【参考方案1】:

git ls-files 命令列出了当前分支上最新提交中存在的所有文件。

或者,您可以使用git diff --name-only 显示任意两次任意提交之间不同的文件列表。

【讨论】:

【参考方案2】:

git log --name-status 将在每次提交中给出更改文件的名称和状态

【讨论】:

你指的是分支名称? 完美答案,精彩【参考方案3】:

如果您的分支源自master,您可以使用此命令列出分支后添加的所有新文件:

git diff master...new-branch --name-status --diff-filter=A

--diff-filter 的可用过滤器有:

Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R)

【讨论】:

您希望得到一些帮助,您应该提供更多信息。你得到错误的输出吗?你有错误吗? 这对我有用。我创建了一个分支,进行了一些提交,并且只寻找修改后的文件。 ls-tree 解决方案在我最初的结帐时给了我所有的文件——不知道为什么——但这给了我新分支中修改过的文件。非常感谢!!【参考方案4】:

尝试使用smartgit。它是 git 的 gui 客户端。它具有非常有用的用户界面,并且可免费用于非商业用途。

【讨论】:

这并没有直接回答他的问题,但是信息很有用。谢谢。 Soooo,您如何使用 smartgit 查看已提交的文件?这实际上会回答这个问题。 @Scott Biggs,请参阅带有ctrl+L 的日志以获取存储库、文件夹或文件。在日志窗口中选择两个提交以查看它们与文件列表之间的差异,并比较窗格。【参考方案5】:

你试过 git ls-tree 吗?

git ls-tree --name-only -r <branch_name> 

--name-only 只给你文件名。 -r 递归到子目录。

如果您想在递归之前列出子目录的名称,请将 -t 添加到参数列表中。

【讨论】:

很好的答案。你回答的问题不是很明显,我知道 git log。 我从我的分支中获得了大量文件的列表,而不是只有几个。 git log --name-only 看起来是查看分支中提交修改的文件的适当答案 @Eugene:否决票有点苛刻,你不觉得吗? @Carl 因为?我认为这个答案是错误的,并且提供的解决方案不起作用我应该投票吗?我对下面的答案投了赞成票。这就是这 2 个箭头的目的 - 勾勒出适合大多数用户的最佳解决方案。 git ls-tree --name-only $branch $directory/ 获取特定目录的列表【参考方案6】:

git log --name-only 为我工作。

【讨论】:

这是似乎真正解决问题的唯一答案。谢谢! 这应该是认可的答案【参考方案7】:

如果您想知道自分支以来被修改的所有不同文件,这可能很有用:

git log --name-status develop...branchname | grep -E "^[AMD]\s" | 排序-u

这个变体将列出修改的子集:

git log --name-status develop...branchname --author= | grep -E "^[AMD]\s" |排序-u

【讨论】:

【参考方案8】:

git log --name-only为我工作。

【讨论】:

【参考方案9】:
git diff development...crmq-2405 --name-status --diff-filter=A

将列出已添加到新分支但不在邮件中的所有文件 - 在本例中为 development 主分支。

git diff development...crmq-2405 --name-status

此变体将显示新分支中的所有文件

通用形式:

git diff main_branch...new_branch --name-status

是的,顺序很重要。

【讨论】:

我认为这被否决了,因为参数实际上是落后的。 development…base 的结果为零,但 git diff base..development --name-status --diff-filter=A 确实列出了我的 dev 分支中的四个新文件。

以上是关于如何找到提交给 git 分支的文件列表?的主要内容,如果未能解决你的问题,请参考以下文章

git导出有差异的文件列表

如何获取按最近提交排序的 Git 分支列表?

Git 之 git常用命令

如何使用 JGit 找到提交的分支?

如何从git的任何分支中获取分支列表?

git小技巧--如何从其他分支merge个别文件或文件夹