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

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

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

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

然而,上述不工作,因为我猜“zip”命令将git操作视为其命令选项的一部分。

有人知道我可以如何做上述工作?

谢谢

你需要在子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 

如果你在一个混帐外壳(bash),你也可以这样做:

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

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