作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我设法从各种来源修改了我发现的脚本,以创建在 2 个变更集之间添加或更改的文件的存档。批处理脚本如下:
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
这在今天之前一直很好用,突然间我收到了以下错误:
The input line is too long. The syntax of the command is incorrect.
我已经确认造成这种情况的原因是 %output% 的结果太长,但不确定是否或如何解决这个问题?
最佳答案
如果你想在两次提交之间导出更改的文件,为什么不(而不是依赖于设置的 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)"
关于windows - 批处理文件中的 git archive "The input line is too long. "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24456200/
我是一名优秀的程序员,十分优秀!