1

我目前正在使用以下命令导出 git 存储库:

git checkout-index -f --prefix=$TARGET_PATH/ $GIT_REPO_PATH/*

实际行为:导出发生在添加到索引的所有文件上。

期望的行为:导出所有不仅添加了,而且也提交了的文件。

我尝试使用--stage-option,但已提交和未提交文件的阶段为 0(我不得不说,我还不了解阶段编号。

任何的想法?

4

3 回答 3

3

您不能在一个命令中执行此操作,您必须先将提交树中的文件加载到索引中。幸运的是,您不必使用您使用的普通索引:

$ export GIT_INDEX_FILE=.git/tmp-index
$ git read-tree HEAD && git checkout-index --prefix=/path/dir/ -f -a
$ rm "$GIT_INDEX_FILE"
于 2012-07-25T10:51:57.680 回答
1

解决这个问题的一个简单、天真的解决方案是使用git archive. 它将从 git 历史中提取一棵树并将其写入标准输出。管道通过 tar 允许您将文件写入磁盘上的特定目录。

# HEAD to use latest committed version
git archive HEAD | tar x -C"/path/to/dir"
于 2012-07-25T09:31:56.597 回答
1

我认为git --work-tree=<path/to/wherever> checkout <HEAD/branch/hash> -- .做你想要的。它将在(由 指定的路径)中创建(存在于指定提交中的每个文件)的副本--work-tree

于 2014-11-26T17:56:46.250 回答