如何解决签出单个已删除文件时pathspec与git已知的任何文件不匹配的问题?
我有一个分支如何解决签出单个已删除文件时pathspec与git已知的任何文件不匹配的问题?,git,git-checkout,Git,Git Checkout,我有一个分支功能,它来自开发,并且在它前面。 stash pops和merge developes的组合导致提交,其中包括特定文件的rm 我正在尝试通过在执行此删除之前从提交中签出文件来撤消此删除,方法是: name@machine ~/path/inside/the/repo/to/the/parent/dir $ git checkout megalongshaofthecommitthatdeletedthefile^ -- filename.ext 但是得到 error: pathsp
功能
,它来自开发
,并且在它前面。stash pop
s和merge develope
s的组合导致提交,其中包括特定文件的rm
我正在尝试通过在执行此删除之前从提交中签出文件来撤消此删除,方法是:
name@machine ~/path/inside/the/repo/to/the/parent/dir
$ git checkout megalongshaofthecommitthatdeletedthefile^ -- filename.ext
但是得到
error: pathspec 'filename.ext' did not match any file(s) know to git.
我尝试签出尚未删除的文件,但git仍然拒绝签出未删除的文件
我如何告诉git从哪里获取此文件
我如何告诉git从哪里获取此文件
可以做些什么?
git reflog
并在更改之前签出上一次提交
reflog是存储库的完整历史记录,允许您返回到任何所需的时间点
git log--follow
将显示修改文件的提交(最后一次更改将是第一次更改)
此命令将显示给定文件的所有日志条目,以便您可以获取所需的提交,并使用git checkout SHA-1 file\u path将文件形式保存在那里
git bisect
搜索删除文件的提交位置
对分是一种搜索“bug”和/或对存储库所做更改的方法,使用它来跟踪文件何时被删除。您可以编写脚本来搜索文件是否存在,并使用git bisect--run…
标志运行它
git签出SHA-1——文件路径
git reflog
并在更改之前签出上一次提交
reflog是存储库的完整历史记录,允许您返回到任何所需的时间点
git log--follow
将显示修改文件的提交(最后一次更改将是第一次更改)
此命令将显示给定文件的所有日志条目,以便您可以获取所需的提交,并使用git checkout SHA-1 file\u path将文件形式保存在那里
git bisect
搜索删除文件的提交位置
对分是一种搜索“bug”和/或对存储库所做更改的方法,使用它来跟踪文件何时被删除。您可以编写脚本来搜索文件是否存在,并使用git bisect--run…
标志运行它
git签出SHA-1——文件路径
pathspec问题的解决方案是指定相对于bash正在查看的目录的父目录,而不仅仅是文件名,因为git不一定运行在bash“打开”的同一目录中 假设git在
C:/ProgramFiles(x86)/git/
name@machine ~/path/inside/the/repo/to/the/parent/dir
$ git checkout megalongshaofthecommitthatdeletedthefile^ -- filename.ext
将查找C:/Program文件(x86)/Git/filename.ext
相反,请运行:
name@machine ~/path/inside/the/repo/to/the/parent/dir
$ git checkout megalongshaofthecommitthatdeletedthefile^ -- ../dir/filename.ext
它将查找
C:/repodir/path/inside/the/repo/to/the/parent/dir/filename.ext
pathspec问题的解决方案是相对于bash正在查看的目录指定父目录,而不仅仅是文件名,因为git不一定在bash“打开”的同一目录中运行
假设git在C:/ProgramFiles(x86)/git/
name@machine ~/path/inside/the/repo/to/the/parent/dir
$ git checkout megalongshaofthecommitthatdeletedthefile^ -- filename.ext
将查找C:/Program文件(x86)/Git/filename.ext
相反,请运行:
name@machine ~/path/inside/the/repo/to/the/parent/dir
$ git checkout megalongshaofthecommitthatdeletedthefile^ -- ../dir/filename.ext
它将查找
C:/repodir/path/inside/the/repo/to/the/parent/dir/filename.ext
对不起,我不清楚,我已经得到了删除它的提交(及其sha哈希)。我正在尝试使用该文件撤消此提交,git找不到该文件。在该提交中还有我想要的其他更改,我只想为该提交还原此文件的rm。没问题git checkout SHA-1--file_path
-它将从给定的提交中签出文件,但不会,这将签出删除,这就是为什么我运行git checkout SHA-1^--file_path
在删除之前获取文件。但在这一点上,git出现错误,无法找到文件。问题的关键是什么。文件路径应该是什么格式?相对于repo的根,相对于bash所在的目录?完全符合C:\?还有什么吗?对不起,我不清楚,我已经得到了commit(及其sha散列)的删除位置。我正在尝试使用该文件撤消此提交,git找不到该文件。在该提交中还有我想要的其他更改,我只想为该提交还原此文件的rm。没问题git checkout SHA-1--file_path
-它将从给定的提交中签出文件,但不会,这将签出删除,这就是为什么我运行git checkout SHA-1^--file_path
在删除之前获取文件。但在这一点上,git出现错误,无法找到文件。问题的关键是什么。文件路径应该是什么格式?相对于repo的根,相对于bash所在的目录?完全符合C:\?还有别的吗?