我目前正在使用以下方式导出git存储库:
git checkout-index -f --prefix=$TARGET_PATH/ $GIT_REPO_PATH/*
实际行为:导出发生在添加到索引的所有文件中。
所需行为:导出不仅已添加但已提交的所有文件。
我尝试使用--stage
- 选项,但是对于已提交和未提交的文件,该阶段为0(我不得不说,我还不了解阶段编号。
有什么想法吗?
答案 0 :(得分:3)
您无法在一个命令中执行此操作,您必须先将提交树中的文件加载到索引中。幸运的是,您不必使用您使用的普通索引:
$ export GIT_INDEX_FILE=.git/tmp-index
$ git read-tree HEAD && git checkout-index --prefix=/path/dir/ -f -a
$ rm "$GIT_INDEX_FILE"
答案 1 :(得分:1)
这个问题的简单,天真的解决方案是使用git archive
。
它将从git历史中提取树并将其写入标准输出。
管道槽tar允许您将文件写入磁盘上的特定目录。
# HEAD to use latest committed version
git archive HEAD | tar x -C"/path/to/dir"
答案 2 :(得分:1)
我认为git --work-tree=<path/to/wherever> checkout <HEAD/branch/hash> -- .
可以满足您的需求。它将在(由--work-tree
指定的路径中)创建(指定提交中存在的每个文件)的副本。