windows – 通过批处理文件在GIT中创建已修改文件的存档
我正在使用此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.我遇到的问题是从批处理文件运行时此命令返回以下错误:
我猜可能有一些角色逃避问题,但我无法找到具体的突破. 我如何编写git命令以便它可以从批处理文件中运行? UPDATE 我尝试删除–name-only选项,并在通过SourceTree尝试批处理脚本时收到以下错误:
希望这有助于缩小可能发生的事情. 进一步更新 事实证明我的语法错误只是从特定提交中获取修改后的文件,但是使用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
假设您需要一个Windows批处理文件,而不是一个bash脚本,这里有一个最小的批处理文件可以做你想要的:
setlocal enabledelayedexpansion set output= for /f "delims=" %%a in ('git diff --name-only %1^^') do ( set output=!output! "%%a" ) git archive -o update.zip HEAD %output% endlocal 它的工作原理是将git diff …命令的所有输出行收集到一个环境变量中,然后使用它来执行git archive …操作. Windows for命令的文档是here,包括/ f开关. setlocal命令的文档是here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 将Uint8Array转换为JavaScript中的数组
- 在Windows上连接到GitHub时出现问题,甚至是通过PuTTY连接
- windows环境下php配置memcache的具体操作步骤
- 从命令行在Windows上静默设置屏幕保护程序?
- windows-ribbon-framework – 如何使Windows Ribbon Framew
- 【你好,windows】Win10 x64 1709 X64企业G纯净版2019.7.28
- 使用Box Windows SDK v2库在C#桌面应用程序中对Box进行身份
- 为什么Windows XCOPY在通过psexec通过Perl系统调用调用时失
- 远程PowerShell脚本不适用Hyper-V快照
- Windows Containers 大冒险: 容器网络