我正在使用Git进行版本控制,与SVN不同,我没有遇到过在两个版本,分支或标签之间执行已更改文件导出的固有方法。
作为替代方案,我想使用linux zip命令并传递一组文件名,但文件名是另一个命令git diff的结果。以下是我想要实现的一个例子:
zip /home/myhome/releases/files.zip git diff --name-only -a 01-tag 00-tag
但是上面的方法不起作用,因为我猜'zip'命令将git操作视为其命令选项的一部分。
有人知道如何制作类似上述作品的东西吗?
由于
答案 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的系统。