我在存储库中创建了一个标记,比方说v1.0.0。后来有2个提交:第一个有一些更改,第二个有恢复的更改。我想在标记后找到所有修改过的文件。 我试过了:
git diff --name-only v1.0.0 master
但是git diff
没有任何变化 - 文件看起来一样。但我需要知道修改了哪些文件,即使该修改已被恢复。
答案 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)
当一个提交被还原时,结果差异将与原始提交从未存在过的相同,因此更改将不再存在。
我认为尝试查看一个恢复的差异会给你一个错误的代码差异,这没有任何意义。
如果您确实需要这些更改(它们不必还原),您可以恢复还原提交。