我正在使用此git命令创建在特定提交中修改的文件的存档:
git archive -o update.zip HEAD $(git diff --name-only COMMITID^)
其中COMMITID是我要存档的提交的ID.从命令行可以正常工作,但我想从批处理文件中运行它.以下是我正在使用的批处理文件的内容:
git archive -o update.zip HEAD $(git diff --name-only %1^^)
其中%1是通过SourceTree传入的提交ID.我遇到的问题是从批处理文件运行时此命令返回以下错误:
error: unknown option `name-only’
我猜可能有一些角色逃避问题,但我无法找到具体的突破.
我如何编写git命令以便它可以从批处理文件中运行?
UPDATE
我尝试删除–name-only选项,并在通过SourceTree尝试批处理脚本时收到以下错误:
fatal: path not found: $(git
希望这有助于缩小可能发生的事情.
进一步更新
事实证明我的语法错误只是从特定提交中获取修改后的文件,但是使用msandiford的答案我想出了这个完美运行的批处理文件脚本:
setlocal enabledelayedexpansion set output= for /f "delims=" %%a in ('git diff-tree --no-commit-id --name-only -r %1^^') do ( set output=!output! "%%a" ) git archive -o update.zip HEAD %output% endlocal