从各种来源我设法修改了一个脚本,我发现它创建了在两个变更集之间添加或更改的文件的存档。批处理脚本如下:
setlocal enabledelayedexpansion
set output=
for /f "delims=" %%a in ('git diff --name-only %1 %2') do ( set output=!output! "%%a" )
git archive -o export.zip HEAD %output%
endlocal
直到今天这种情况一直很好,突然之间我又收到了以下错误:
输入行太长。该命令的语法不正确。
我已经确认原因是%输出%的结果太长但不确定我是否或如何解决这个问题?
答案 0 :(得分:2)
如果你想在两次提交之间导出已更改的文件,为什么不(而不是依赖于设置的DOS变量,并且可能太长)执行:
git archive --output=file.zip HEAD $(git diff --name-only SHA1 SHA2)
由于它是Unix语法,你需要调用Git for Windows中包含的sh.exe(正如我在“What is the exact meaning of Git Bash?”中提到的那样)
OP ProNotion建议in the comments:
"C:\Program Files (x86)\Git\bin\sh.exe" --login -i -c "git archive -o export.zip HEAD $(git diff --name-only %1 %2)"