10

是否有一种简单的方法可以仅导出/存档来自给定提交或 git 中的一系列提交的更改文件?我似乎找不到明确的说明来执行此操作(而且我是 Linux/Git 的新手)。

我正在使用 msysgit,在大多数情况下,我可以很好地部署整个存储库,但在许多情况下,一次部署几个文件的小修复会更有效。

在远程服务器上推送/拉取/安装 git 并不是一个真正的选择,因为我的访问级别因项目和客户而异。

有没有直接的方法(粗略猜测):

pipe 'diff --names-only' to 'git-archive'? 
4

1 回答 1

27

我认为没有必要涉及 git-archive。使用--name-only,您可以压缩文件:

tar czf new-files.tar.gz `git diff --name-only [diff options]`

由于您是 Linux 新手,这可能需要一些解释:

命令行中的反引号导致 shell 首先执行反引号内的命令,然后将该命令的输出替换为tar. 所以git diff首先运行,它会生成一个文件名列表,每行一个。换行符折叠为空格,整个文件列表放在tar命令行上。然后tar运行以创建给定的存档。请注意,这会生成很长的命令行,因此如果您有大量已更改的文件,您可能需要使用不同的技术。

于 2009-11-05T02:58:11.800 回答