我想让git给我一个自给定修订版以来未编辑的文件夹中的文件列表

时间:2011-02-09 09:45:25

标签: git

我一直在研究一个基本上需要触及每个视图的项目(所以在app / views文件夹中),但是有很多视图。鉴于bash和git的组合,如何从给定的修订版本中获取我未提交编辑的文件列表?

1 个答案:

答案 0 :(得分:4)

这可能是一种更简洁的方法,但我认为以下方法有效:

如果更改前的最后一次修订为fa1afe1,那么您可以在app/views下找到所有已更改的文件:

git diff --name-only fa1afe1 -- app/views

此外,您可以在app/views下看到git正在跟踪的所有文件:

git ls-files app/views

现在,您可以使用comm -3和bash的进程替换语法找到仅出现在其中一个命令的输出中的所有行:

comm -3 <(git diff --name-only fa1afe1 -- app/views|sort) <(git ls-files app/views|sort)

(您可能会发现将两个命令的输出发送到临时文件然后使用comm而不是使用进程替换更清楚,因为那时您将拥有一个适用于{{1}的解决方案也可能更容易理解。)

此命令还将显示自/bin/sh以来的更改中删除的文件,因为这些文件不会出现在fa1afe1的输出中。另外需要注意的是,严格来说,这只会向您显示该提交与现在之间不同的文件,因此它会丢失在一次提交中更改的文件,然后再恢复为原始内容。如果这是一个问题,那么您可以使用git ls-files git log和适当的格式来构建已更改文件的列表,而不是--name-only