如何将文件列表传递给linux zip命令

时间:2010-04-10 17:53:10

标签: linux svn git zip export

我正在使用Git进行版本控制,与SVN不同,我没有遇到过在两个版本,分支或标签之间执行已更改文件导出的固有方法。

作为替代方案,我想使用linux zip命令并传递一组文件名,但文件名是另一个命令git diff的结果。以下是我想要实现的一个例子:

zip /home/myhome/releases/files.zip git diff --name-only -a 01-tag 00-tag

但是上面的方法不起作用,因为我猜'zip'命令将git操作视为其命令选项的一部分。

有人知道如何制作类似上述作品的东西吗?

由于

2 个答案:

答案 0 :(得分:6)

您需要在子shell中执行git命令:

zip /home/myhome/releases/files.zip `git diff --name-only -a 01-tag 00-tag`
# another syntax (assuming bash):
zip /home/myhome/releases/files.zip $(git diff --name-only -a 01-tag 00-tag)

另一个选项是xargs命令:

git diff --name-only -a 01-tag 00-tag | xargs zip /home/myhome/releases/files.zip

答案 1 :(得分:3)

如果你在git shell(bash)中,你也可以这样做:

git diff -–name-only commit1 commit2 | zip ../Changes.zip –@

适用于基于Windows和Unix的系统。