如何找到提交给 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 分支的文件列表?的主要内容,如果未能解决你的问题,请参考以下文章