git:获取沿某个特定文件修改的文件列表
git: get the list of files that have been modified along one specific file
我想检查哪些文件与一个特定文件同时被修改。具体来说,我想获取此特定文件的历史记录,对于此历史记录的每次提交,我想知道哪些文件受到了影响。
当我执行 git log --name-only
时,我会获得完整的提交历史记录,以及每次提交的已修改文件列表。
现在,如果我这样做 git log <file>
,我将获得涉及该特定文件的提交历史记录。
git log --name-only <file>
,但是,不包括每次提交修改的文件的完整列表。相反,它只显示 <file>
,老实说,这毫无用处。
有没有办法让这个命令包含所有文件?
您可以通过管道传输这两个命令。
$ git log --format="%h" <file-name> | xargs git show --name-only
此处:
git log --format="%h" : select 给定文件被更改的 commit-sha
xargs git show --name-only:将 selected 提交作为参数并显示完整的更改文件名。
使用git-rev-list
列出影响特定路径的提交,然后git-show
获取每个提交中修改的所有文件:
git show --name-only $(git rev-list HEAD -- PATH)
您也可以使用 TortoiseGit 工具(Git 基于 UI 的工具,类似于 TortoiseSVN)。
安装 Tortoise 后Git-
右键单击该文件并转到菜单中的 TortoiseGit。
单击显示日志。
它将显示该文件的提交历史以及这些提交中包含的其他文件。它还将显示文件中的更改。
我想检查哪些文件与一个特定文件同时被修改。具体来说,我想获取此特定文件的历史记录,对于此历史记录的每次提交,我想知道哪些文件受到了影响。
当我执行 git log --name-only
时,我会获得完整的提交历史记录,以及每次提交的已修改文件列表。
现在,如果我这样做 git log <file>
,我将获得涉及该特定文件的提交历史记录。
git log --name-only <file>
,但是,不包括每次提交修改的文件的完整列表。相反,它只显示 <file>
,老实说,这毫无用处。
有没有办法让这个命令包含所有文件?
您可以通过管道传输这两个命令。
$ git log --format="%h" <file-name> | xargs git show --name-only
此处:
git log --format="%h" : select 给定文件被更改的 commit-sha
xargs git show --name-only:将 selected 提交作为参数并显示完整的更改文件名。
使用git-rev-list
列出影响特定路径的提交,然后git-show
获取每个提交中修改的所有文件:
git show --name-only $(git rev-list HEAD -- PATH)
您也可以使用 TortoiseGit 工具(Git 基于 UI 的工具,类似于 TortoiseSVN)。
安装 Tortoise 后Git-
右键单击该文件并转到菜单中的 TortoiseGit。
单击显示日志。
它将显示该文件的提交历史以及这些提交中包含的其他文件。它还将显示文件中的更改。