如何在git中找到修改过的文件,即使是恢复提交?

时间:2014-07-28 14:20:48

标签: git

我在存储库中创建了一个标记,比方说v1.0.0。后来有2个提交:第一个有一些更改,第二个有恢复的更改。我想在标记后找到所有修改过的文件。 我试过了:

git diff --name-only v1.0.0 master 

但是git diff没有任何变化 - 文件看起来一样。但我需要知道修改了哪些文件,即使该修改已被恢复。

4 个答案:

答案 0 :(得分:2)

最接近的解决方案可能是git log --oneline --stat v1.0.0..master。这将打印提交列表及其触摸的文件:

b1be31 Revert "test commit"
 fileA | 1 -
 1 file changed, 1 deletion(-)
23faef another commit
 fileB | 2 +
 fileC | 3 +
 2 files changed, 5 insertions(+)
0821dea test commit
 fileA | 1 +
 1 file changed, 1 insertion(+)

由于列出了每个提交,因此可以看到恢复的更改(两次,首先是原始提交,然后是还原提交)。

如果你只想要一个文件名列表,你必须通过某种脚本来过滤它,但是为了获得快速列表,它可能就足够了。如果您开始编写脚本,您可能需要查看管道命令以获得更容易解析的内容...

答案 1 :(得分:1)

我在互联网上搜索这个问题,什么都没得到。最后我使用这个方法:

git log commit1..commit2 --format="" --name-only | sort | uniq

什么是重要的,它有效。

答案 2 :(得分:0)

来自man git-diff

git diff [--options] <commit> <commit> [--] [<path>...]
  This is to view the changes between two arbitrary <commit>.

因此,只需在进行更改之前需要此提交的名称,以及进行更改的提交,然后您就可以运行git diff commit1 commit2

答案 3 :(得分:0)

当一个提交被还原时,结果差异将与原始提交从未存在过的相同,因此更改将不再存在。

我认为尝试查看一个恢复的差异会给你一个错误的代码差异,这没有任何意义。

如果您确实需要这些更改(它们不必还原),您可以恢复还原提交。