4

在 git 中,我试图将特定存储库的版本检出到临时文件夹内的版本文件夹中,但是当我这样做时

git checkout master~X C:/file/path/temp/versionX

我得到错误

error: pathspec 'temp/versionX' did not match any file(s) known to git.

是什么导致了问题,我该如何解决?

4

3 回答 3

4

git checkout仅在“工作树”内运行。为了做你想做的事,改变 Git 对工作树的看法。有几种不同的方法可以做到这一点:

  • 选项 1:从 Git 存储库运行

    cd /path/to/repository
    # git automatically locates the .git directory as usual
    git --work-tree=C:/file/path/temp/versionX checkout master~X
    
  • 选项 2:从目标目录运行

    cd C:/file/path/temp/versionX
    # if --git-dir is specified, Git assumes the working tree is .
    git --git-dir=/path/to/repository/.git checkout master~X
    
  • 选项 3:从其他目录运行

    cd /some/arbitrary/path
    # need to specify both the path to .git and the destination directory
    git --git-dir=/path/to/repository/.git \
        --work-tree=C:/file/path/temp/versionX \
        checkout master~X
    
于 2012-06-28T16:02:38.907 回答
0

结帐不能那样使用。你想要的是 git-archive(1)。例如:

ancestor=10
git archive --prefix="version${ancestor}" master~$ancestor |
    tar xvf - -C "C:/file/path/temp"

这会将命名的提交导出到标准输出上的 tarball,然后 tar 将在适当的位置解压缩。起初它似乎有点麻烦,但它会在你身上成长。

于 2012-06-28T15:24:59.790 回答
0

你可以试试这个:

mkdir /file/path/temp/versionX
cd /file/path/temp/versionX
git --git-dir=/path/to/repo/.git --work-path=. checkout master~X
于 2012-06-28T16:02:48.067 回答