我使用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的系统。