【问题标题】:Git cannot checkout deleted file, returns pathspec errorGit 无法检出已删除的文件,返回 pathspec 错误
【发布时间】:2019-12-21 23:54:16
【问题描述】:

我正在准备一个拉取请求,其中一个要点是保留一些遗留文件。这发生在当前HEAD 的几次提交中。遵循从提交到cherry-pick a single file 的过程:

git checkout 1234567 -- src/Reporters/DeletedFile.h src/Reporters/DeletedFile.cpp

我从 Git Bash 收到以下错误消息:

error: pathspec 'src/Reporters/DeletedFile.h' did not match any file(s) known to git
error: pathspec 'src/Reporters/DeletedFile.cpp' did not match any file(s) known to git

检查show 表示文件已在哈希 1234567 中删除,并且使用完整哈希也会导致相同的错误。什么可能导致此错误?

【问题讨论】:

    标签: git


    【解决方案1】:

    你需要运行的命令是

    git checkout 1234567^ -- src/Reporters/DeletedFile.h src/Reporters/DeletedFile.cpp
    

    这将选择 1234567 之前的提交,这是包含您需要的文件的最后一个提交。

    【讨论】:

    • 我只是在这里尝试了一个小型测试存储库,它工作正常。你确定这两个文件的路径是正确的吗?
    • @ArneJ:确保当您这样做git checkout 时,您处于与存储库关联的工作树的顶层。或者,使用指定“存储库顶部”(:/:src/Reporters/...:(top)src/Reporters/...)的 pathspec 语法。
    • @ArneJ 是的,仔细检查,复制粘贴等。但是,我想知道哈希来自这个的事实是否是 git 的七个提交(其中一个是主要合并)被什么东西绊倒了。
    • @torek 在尝试执行:(top)src/...时遇到语法错误@
    • 要查看哪些提交更改了文件,您可以尝试git log --stat -- path/to/deleted/file。这将显示所有更改路径的提交。也许您发现另一个提交删除了文件,然后可以将该提交哈希与建议的签出命令一起使用。
    【解决方案2】:

    哈希1234567 不包含您要签出的文件,因为它刚刚被删除。您需要在删除之前从提交中签出文件。

    要获得之前的提交,您可以使用<hash>^1 或仅使用<hash>^,如this answer

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2020-11-04
      • 2015-02-04
      相关资源
      最近更新 更多