0

我想将索引、HEAD 或任何其他提交中的导出、签出或任何您称之为的内容导出到特定文件夹,这怎么可能?类似的问题已经被问过:

GIT:结帐到特定文件夹

做一个“git export”(比如“svn export”)?

但是建议的解决方案的问题是它们保留了相对路径。因此,例如,如果我使用上述方法将文件 nbapp/editblog.php 签出到文件夹 temp,则该文件将在 temp/nbapp/editblog.php 中签出!

反正有没有直接结帐到'temp'?

此外,另一个重要的事情是能够检查 HEAD 或任何其他提交。checkout-index(允许使用 --prefix 选项检出特定文件夹,而普通检出不允许)仅检出索引。如果我想从某个提交中检出某个文件到某个文件夹怎么办?一个类似的问题已经

4

3 回答 3

2

git cat-file blob revision:path > path/where/to/save/file

于 2010-12-22T08:38:40.577 回答
1

使用git archive,您可以在树形规范中包含您不想复制的路径元素。例如

git archive --prefix=temp/ HEAD:nbapp editblog.php | tar x

创建temp/editblog.php,而

git archive --prefix=temp/ HEAD nbapp/editblog.php | tar x

创建temp/nbapp/editblog.php.

于 2010-12-22T08:50:38.613 回答
0

使用--work-tree

这迫使您也使用--git-dir指向您的 .git 目录。 --git-dir=.git假设您在您的 git 文件夹中。您当然可以通过调整此文件夹从其他任何地方调用此命令。

然后指定一个<tree>而不是一个提交。这将删除主要路径。

git  --git-dir=.git  --work-tree=/folder/into/which/to/export/  restore  --source=HEAD:path/in/your/repo  .

使用:path/in/your/repo应该使用索引。

如果您只需要一个文件,请为文件命名,而不是使用“。” 在最后。

如果您希望在 dest 文件夹中创建部分文件夹结构(用于子路径)

git  --git-dir=.git  --work-tree=/folder/into/which/to/export/  restore  --source=HEAD:path/in/  your/repo

仍然只有出口path/in/your/repo。但创建目录/folder/into/which/to/export/your/repo

于 2021-09-15T21:50:23.973 回答