如何将字符 q 从批处理文件发送到 GIT

Posted

技术标签:

【中文标题】如何将字符 q 从批处理文件发送到 GIT【英文标题】:How can I send the character q to GIT from batch file 【发布时间】:2012-12-22 10:50:33 【问题描述】:

我需要从我正在使用的脚本中显示我的存储库的最后一次提交:

git log -1 --pretty=oneline

问题来了:

    一行打印整个提交哈希,因为要使用这种格式打印。

    git log -1 --pretty=format:%h\ %s\ %an

    但是由于% 符号,批处理文件中的部分代码被识别为变量。

    为了完成显示日志,需要发送字符q,当直接输入到 git bash 时效果很好,但是从批处理文件发送时我得到“'q' is not识别为内部或外部命令”。

【问题讨论】:

注意:在 Windows 批处理脚本中,%%h %%s %%an 可以工作。 【参考方案1】:

至于“q”问题:

git --no-pager

【讨论】:

【参考方案2】:

除非您在发出git log 等命令时强制使用寻呼机,否则如果没有控制终端,该命令将不会使用寻呼机,需要您键入q 才能退出寻呼机。

您可以使用以下方法测试我在此处描述的内容:

git log -1 --pretty=oneline | cat

注意在上述命令末尾使用cat

如果git 仍然需要你输入q,那么你必须看看你是否没有任何配置文件(全局--~/.gitconfig--或本地--.git/config)正在强制 git 使用寻呼机。

您可以通过使用以下内容来规避(不更改配置文件)git的行为:

GIT_PAGER= git log -1 --pretty=oneline

注意等号和git之间的空格。

关于百分号,您可能需要提供有关您的环境的更多详细信息,因为我看不到百分号被 bash 本身解释为变量。

【讨论】:

使用“| cat”解决了这个问题,谢谢rbrito。对不起,我正在处理一个批处理文件来显示提交。 @JavierChauvin,如果您认为该答案有用,请点赞/选择它作为您问题的答案。

以上是关于如何将字符 q 从批处理文件发送到 GIT的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用处理程序的情况下使用 ajax 从客户端将文件发送到服务器端?

求助如何用bat整理文件内容,并输出结果?

如何防止文件被发送到暂存区?

Git - 处理错误的分支 - 如何将更改复制到现有主题分支

如何在 OS X 上的 Git 中处理文件名中的亚洲字符

如何从 Windows 命令行启动 Git Bash?