我有一个包含n个提交的Git存储库。
我有一个我需要的文件,它曾经在存储库中,我突然寻找并想“哦!那个文件去哪儿了?”
是否有一系列Git命令会告诉我“提交n-13时删除了文件really_needed.txt”?
换言之,如果不查看每个单独的提交,并且知道我的Git repo对每个文件都有更改,那么我能快速找到包含该文件的最后一个提交吗?
我有一个包含n个提交的Git存储库。
我有一个我需要的文件,它曾经在存储库中,我突然寻找并想“哦!那个文件去哪儿了?”
是否有一系列Git命令会告诉我“提交n-13时删除了文件really_needed.txt”?
换言之,如果不查看每个单独的提交,并且知道我的Git repo对每个文件都有更改,那么我能快速找到包含该文件的最后一个提交吗?
当前回答
gitlog找到的最近一次提交--完整的历史记录--src/main/java/SomeFile.java在我的案例中没有包含文件删除。我在git-log下面找到了一个提交--完整的历史记录--stat--src/main/java/SomeFile.java
示例输出:
commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Merge: bbbbb ccccc
Author: Geoff Langenderfer <geoff@gmail.com>
Date: Thu Sep 15 13:08:28 2022 -0700
remove scala
commit ddddddddddddddddddddddddddddddddddddddd <-- this is the one I wanted
Author: Geoff Langenderfer <geoff@gmail.com>
Date: Sun Sep 11 16:13:03 2022 -0700
unblock spark 3
src/main/java/SomeFile.java | 44 ---------------------------------
1 file changed, 44 deletions(-)
其他回答
Git日志,但您需要在路径前面加上--
Eg:
dan-mac:test dani$ git log file1.txt
fatal: ambiguous argument 'file1.txt': unknown revision or path not in the working tree.
dan-mac:test dani$ git log -- file1.txt
commit 0f7c4e1c36e0b39225d10b26f3dea40ad128b976
Author: Daniel Palacio <danpal@gmail.com>
Date: Tue Jul 26 23:32:20 2011 -0500
foo
我刚刚在这里添加了一个解决方案(在git中有没有方法列出存储库中的所有已删除文件?),用于通过使用正则表达式查找已删除文件的提交:
git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
这将返回名为some_dir(级联)的目录中删除的所有内容。其中\/some_dir\/is的任何sed正则表达式都可以。
OSX(感谢@triple和@keif)
git log --diff-filter=D --summary | sed -n -e '/^commit/h' -e '\:/:{' -e G -e 's/\ncommit \(.*\)/ \1/gp' -e }
此命令不适用于我:
git log --full-history -1 -- [file path]
这是有效的命令:
git log --follow -- [file path]
gitlog找到的最近一次提交--完整的历史记录--src/main/java/SomeFile.java在我的案例中没有包含文件删除。我在git-log下面找到了一个提交--完整的历史记录--stat--src/main/java/SomeFile.java
示例输出:
commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Merge: bbbbb ccccc
Author: Geoff Langenderfer <geoff@gmail.com>
Date: Thu Sep 15 13:08:28 2022 -0700
remove scala
commit ddddddddddddddddddddddddddddddddddddddd <-- this is the one I wanted
Author: Geoff Langenderfer <geoff@gmail.com>
Date: Sun Sep 11 16:13:03 2022 -0700
unblock spark 3
src/main/java/SomeFile.java | 44 ---------------------------------
1 file changed, 44 deletions(-)
您可以找到删除文件的最后一次提交,如下所示:
git rev-list -n 1 HEAD -- [file_path]
此处提供更多信息