搜索并查看从回购中删除的文件
我正在使用git开发一个项目,并且我知道在过去的某个时间(很久以前我有代码),有一个名为exec.js
的文件。 我想查看这个文件的内容。 我知道哪个存储库用于包含此文件,但我不知道确切的路径。
你可以在git log
使用通配符:
git log -- *exec.js
当任何名为exec.js
文件被修改时,会给你所有的日志消息。
一旦你找到删除提交(说A
),你可以
git checkout A -- *exec.js
这会为您带来最后一个版本的exec.js
如果你想查看exec.js
的完整历史记录,你可以使用gitk
:
gitk -- *exec.js
这将再次向您显示所有修改。 如果您对一次提交特别感兴趣,可以在gitk
对话框中右键单击该文件,然后选择外部差异工具 。 这将打开带有完整文件的外部差异工具,而不仅仅是补丁。
您可以使用以下命令在日志历史记录内搜索特定文件 -
如果你没有文件路径,那么
git log --diff-filter=D --summary | grep filename
如果你有文件路径,那么你可以使用 -
git log -- filepath
git log -n 1 -- filepath
一旦你得到修订版本,你可以签出特定的版本来获得该文件
有一种简单的方法可以用一个或两个命令列出已删除文件的全名及其内容。 不过,这里有一个让你开始的别名:
$ 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
别名,它将使用提供的文件名称模式( grep -P
提供的模式匹配)搜索已删除的文件(使用diff-tree
),显示文件被删除的提交,文件的全名及其内容在被删除之前。
使用以下示例存储库历史记录:
$ 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
链接地址: http://www.djcxy.com/p/62343.html