Git:签出特定文件夹?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (70)

我想用类似于:

git checkout -- <path>/<file>

但是我想将文件签出到我选择的某个文件夹,而不是覆盖本地/。

知道吗?

提问于
用户回答回答于

你可以用git checkout-index为此,这是一个低级命令,如果要导出所有内容,可以使用-a

git checkout-index -a -f --prefix=/destination/path/

引用手册页:

决赛“/”关于前缀很重要。导出的名称实际上只是以指定的字符串作为前缀。

如果想导出某个目录,需要使用一些技巧。该命令只接收文件,不接收目录。若要将其应用于目录,请使用“find”命令并将输出管道输送到git。

find dirname -print0 | git checkout-index --prefix=/path-to/dest/ -f -z --stdin

也来自手册页:

直觉不是这里的目标。可重复性是。

用户回答回答于

另一种解决方案是更干净的--只需指定一个不同的工作树即可。

要签出从头(而不是索引)到特定的OUT目录的所有内容:

git --work-tree=/path/to/outputdir checkout HEAD -- .

要将子目录或文件从头签出到特定目录,请执行以下操作:

git --work-tree=/path/to/outputdir checkout HEAD -- subdirname

扫码关注云+社区