【发布时间】:2012-02-16 09:23:24
【问题描述】:
如何列出我提交到特定分支的所有文件?我已经向一个分支提交了大约 40 多个文件,我需要找到文件名,因为我正在尝试调试一些东西,当我不记得文件名时很难做到。
git log 只给了我一个很长的提交列表,而不是实际的文件。
【问题讨论】:
如何列出我提交到特定分支的所有文件?我已经向一个分支提交了大约 40 多个文件,我需要找到文件名,因为我正在尝试调试一些东西,当我不记得文件名时很难做到。
git log 只给了我一个很长的提交列表,而不是实际的文件。
【问题讨论】:
git ls-files 命令列出了当前分支上最新提交中存在的所有文件。
或者,您可以使用git diff --name-only 显示任意两次任意提交之间不同的文件列表。
【讨论】:
git log --name-status 将在每次提交中给出更改文件的名称和状态
【讨论】:
如果您的分支源自master,您可以使用此命令列出分支后添加的所有新文件:
git diff master...new-branch --name-status --diff-filter=A
--diff-filter 的可用过滤器有:
Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R)
【讨论】:
尝试使用smartgit。它是 git 的 gui 客户端。它具有非常有用的用户界面,并且可免费用于非商业用途。
【讨论】:
ctrl+L 的日志以获取存储库、文件夹或文件。在日志窗口中选择两个提交以查看它们与文件列表之间的差异,并比较窗格。
你试过 git ls-tree 吗?
git ls-tree --name-only -r <branch_name>
--name-only 只给你文件名。 -r 递归到子目录。
如果您想在递归之前列出子目录的名称,请将 -t 添加到参数列表中。
【讨论】:
git log --name-only 看起来是查看分支中提交修改的文件的适当答案
git ls-tree --name-only $branch $directory/ 获取特定目录的列表
git log --name-only 为我工作。
【讨论】:
如果您想知道自分支以来被修改的所有不同文件,这可能很有用:
git log --name-status develop...branchname | grep -E "^[AMD]\s" | 排序-u
这个变体将列出你修改的子集:
git log --name-status develop...branchname --author= | grep -E "^[AMD]\s" |排序-u
【讨论】:
git log --name-only为我工作。
【讨论】:
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 分支中的四个新文件。