Pok*_*Pok 57 windows git batch-file
我尝试将一系列GIT命令作为批处理文件连续使用,这样我就不会重复太多了.例如,我有update_repo_branch.bat
一个调用此批处理文件来更新本地存储库并与远程分支同步一个分支:
@echo off
if(%1)==()goto end
if if(%2)==()goto end
cd%1
git checkout%2
git fetch origin
git merge oring /%2
:end
很好是懒惰,但我发现当GIT命令完成时,它似乎发送一个退出标志以终止正在运行的任何东西.因此,使用批处理文件一次性完成它们只是不起作用.任何想法如何解决它?
Mic*_*urr 69
我不确定所有Windows git包是否都适用,但至少有些人使用git.cmd
脚本作为实际git可执行文件的包装器(例如git.exe
).因此,当您的批处理文件使用git
命令时,Windows实际上正在运行另一个批处理文件.
不幸的是,当一个批处理文件调用另一个批处理文件时,默认情况下它会"跳转"到调用的批处理文件,永远不会返回(这是为了兼容古老的MS-DOS命令处理器或其他东西).
您可以通过以下几种方式解决此问题:
git
使用call
命令调用批处理文件以运行git.cmd
批处理文件并返回到您的批处理文件:
call git checkout %2
call git fetch origin
rem etc...
Run Code Online (Sandbox Code Playgroud)git
在.exe
显式中使用扩展名调用批处理文件,以git.cmd
完全避免批处理文件.为了实现这一点,您可能需要确保按照git.exe
预期的方式设置路径和其他环境变量(这似乎是git.cmd
msysgit中的内容):
git.exe checkout %2
rem etc...
Run Code Online (Sandbox Code Playgroud)