仅在Git中导出/存档已更改的文件

时间:2009-11-05 02:54:12

标签: git export archive msysgit

是否有一种简单的方法可以从git中的给定提交或一系列提交中仅导出/存档更改的文件?我似乎无法找到明确的指示(我是Linux / Git的新手)。

我正在使用msysgit,在大多数情况下,我可以部署整个存储库,但在许多情况下,一次部署一些文件的小修补程序效率要高得多。

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

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

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

1 个答案:

答案 0 :(得分:26)

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

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

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

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