无法在 Windows 批处理下的“git.exe fetch origin”中使用管道

Posted

技术标签:

【中文标题】无法在 Windows 批处理下的“git.exe fetch origin”中使用管道【英文标题】:Can't using pipe within "git.exe fetch origin" under Windows batch 【发布时间】:2012-05-27 14:04:36 【问题描述】:

我写了一个批处理来检查和部署来自 github 的 rails 应用程序,批处理文件见下文。问题是git.exe fetch origin | find "remote: Counting Objects" 总是返回errorlevel 1,即使我们有新的提交。我必须先终止 Rails 应用程序,因为某些文件被锁定 (*.jars) 并导致 git pull 命令失败。

我搜索并找到了以下主题,但即使使用git.exe而不是git.cmd,问题仍然存在。

Check if pull needed in Git git bash : how to check if there's a new commit available

我尝试使用临时文件来存储git.exe fetch origin 结果,但如果看起来这个命令总是将结果打印到控制台。

还有:

git pull | find "Already up-to-date."
if %errorlevel% == 1 (

工作正常

REM @echo 关闭 设置路径=%path%;C:\Program Files\Git\bin;D:\jruby-1.6.7\bin 设置 JRUBY_OPTS=--1.9 git.exe 获取来源 |找到“远程:计数对象” 如果 %errorlevel% == 0 taskkill /f /im:jruby.exe 混帐拉|找到“已经是最新的”。 如果 %errorlevel% == 1 ( 快速眼动 启动黄瓜.bat REM 在更新时做其他事情 ) 快速轨道 任务清单 |找到“jruby.exe” 如果 %errorlevel%==1 ( 回声@rails s > rail.bat 回声@exit >> rail.bat 启动 cmd /c rail.bat ) 出口

【问题讨论】:

【参考方案1】:

我猜我会说它是坏的,因为“计数对象”行显示了一个动态进度指示器,但不要引用我的话。

...
git fetch origin
git branch -a --no-merged |find "remotes/origin"
if %errorlevel% == 0 taskkill /f /im:jruby.exe
...

您可能还想将其限制为仅当前分支:

git branch -a --no-merged |find "remotes/origin/mybranch"

【讨论】:

谢谢, git branch -a --no-merged | find "remotes/origin/HEAD -> master" 现在可以正常工作了。

以上是关于无法在 Windows 批处理下的“git.exe fetch origin”中使用管道的主要内容,如果未能解决你的问题,请参考以下文章

windows下git中sh.exe中文显示乱码问题解决

我在我的 Github 文件夹中找不到我的 git.exe 文件

错误:无法在 Windows cmd 的 PATH 中找到 git

Windows 防火墙、Tinywall 和 GIT

markdown bug-fix-git-无法运行程序“git.exe

如何让 Git 推/拉通过 Windows 7 防火墙?