很久以前,我的项目中有一个文件,我现在希望能够获得它。
问题是:我不知道我什么时候删除了它,也不知道它是在哪条路径上删除的。
当该文件存在时,如何查找该文件的提交?
很久以前,我的项目中有一个文件,我现在希望能够获得它。
问题是:我不知道我什么时候删除了它,也不知道它是在哪条路径上删除的。
当该文件存在时,如何查找该文件的提交?
当前回答
@琥珀给出了正确的答案!另外,如果您不知道文件的确切路径,可以使用通配符!这对我有用。
git log --all -- **/thefile.*
其他回答
摘要:
步骤1
在已删除文件的历史记录中搜索文件的完整路径git-log--diff-filter=D--summary|grep filename
步骤2
您在删除文件之前从提交还原文件
restore () {
filepath="$@"
last_commit=$(git log --all --full-history -- $filepath | grep commit | head -1 | awk '{print $2; exit}')
echo "Restoring file from commit before $last_commit"
git checkout $last_commit^ -- $filepath
}
restore my/file_path
尝试使用其中一个查看器,例如gitk,这样您就可以浏览历史记录,找到那个被记住一半的文件。(对于所有分支,如果需要,请使用gitk--all)
如果您不知道可以使用的确切路径
git log --all --full-history -- "**/thefile.*"
如果您知道文件所在的路径,可以执行以下操作:
git log --all --full-history -- <path-to-file>
这将显示所有涉及该文件的分支中的提交列表。然后,您可以找到所需文件的版本,并用。。。
git show <SHA> -- <path-to-file>
或使用以下方法将其恢复到工作副本中:
git checkout<SHA>^--<文件路径>
请注意插入符号(^),它在所标识的签出之前获得签出,因为在<SHA>提交文件时,文件被删除,我们需要查看上一次提交以获取已删除文件的内容
无法编辑接受的响应,因此将其添加为此处的答案,
要恢复git格式的文件,请使用以下命令(注意SHA后面的“^”符号)
git checkout <SHA>^ -- /path/to/file
获取删除文件的列表并复制删除文件的完整路径
git log --diff-filter=D --summary | grep delete
执行下一个命令以查找该提交的提交id并复制该提交id
git log --all -- FILEPATH
显示已删除文件的差异
git show COMMIT_ID -- FILE_PATH
记住,您可以使用>like将输出写入文件
git show COMMIT_ID -- FILE_PATH > deleted.diff