搜索并查看从仓库中删除的文件

时间:2012-08-07 11:48:53

标签: git search version-control

我正在使用git开发一个项目,我知道在过去的某个时间(很久以前我有代码)存在一个名为exec.js的文件。 我想查看此文件的内容。 我知道哪个存储库用于包含此文件,但我不知道确切的路径。

3 个答案:

答案 0 :(得分:3)

您可以在git log中使用通配符:

git log -- *exec.js
当任何名为exec.js的文件被修改时,

将为您提供所有日志消息。

找到删除提交(比如A)后,您可以

git checkout A -- *exec.js

这将为您带来exec.js的最新版本。

如果您想查看exec.js的完整历史记录,可以使用gitk

gitk -- *exec.js

这将再次显示所有修改。如果您对一次提交特别感兴趣,可以右键单击gitk对话框中的文件,然后选择外部差异工具。这将打开带有完整文件的外部差异工具,而不仅仅是补丁。

答案 1 :(得分:1)

您可以使用 -

在日志历史记录中搜索该特定文件

如果你没有filepath那么

git log --diff-filter=D --summary | grep filename

如果你有文件路径,那么你可以使用 -

git log -- filepath
git log -n 1 -- filepath

一旦得到修订版,您就可以签出该特定修订版以获取该文件

答案 2 :(得分:0)

没有简单的方法可以在一个或两个命令中列出已删除文件的全名及其内容。但是,这是一个让你入门的别名:

$ git config --global alias.find-deleted-file '!f() { for c in `git rev-list HEAD`; do for fnm in `git diff-tree -r --diff-filter=D --name-only $c | grep -P ".*/$1"` ; do echo "$c $fnm" ; git show $c^:$fnm ; echo "" ; done ; done ; } ; f'

这将提供一个Git find-deleted-file别名,该别名将使用提供的文件名模式(diff-tree提供的模式匹配)搜索已删除的文件(使用grep -P),显示提交文件已删除,文件的全名及其内容在删除之前。

使用以下示例存储库历史记录:

$ git log --all --graph --decorate --oneline --name-only
* 3f3cba1 (HEAD, master) I
I
* 4c8b369 H
E/H
* a008343 rm F
E/F
* 525a127 FG
E/F
E/G
* 3a10f93 initial
A
B
C
D
E/F

您将使用以下方法搜索已删除的F文件:

$ git find-deleted-file F
a008343eec91fe917078209d44ae93ee72fc5acb E/F
F