如何退出git log或git diff。

1293
我正在尝试通过Git Immersion来学习Git。
每当我使用git loggit diff时,都有一件让我感到沮丧的事情:

Git log shows (END) marker

当我遇到这个(END)字样时,我不知道下一步该怎么做。

我不能输入任何命令,最后只能关闭当前的Bash窗口然后打开另一个窗口。请问我如何输入下一个想要使用的命令呢?


62
这个问题在谷歌上很难搜索到,我差点就要问自己的问题了。谢谢你和larsmans! - ptkvsk
16
即使我使用q+Enter退出,每次重新开始输入时仍然会出现<END>,它会吞掉我的第一个字符。之后,我可以输入我想要的命令。然而,我宁愿完全不要这种行为。我在Windows上。有什么建议吗? 提示:请注意保持原文意思不变,并尽可能简洁明了地翻译。 - Puneet Lamba
12
Windows用户:你必须先输入q+回车。一旦你使用ctrl+c进行了退出,你就会被困在那个奇怪的循环中。仅使用q+回车来退出。 - STWilson
2
无论控制台显示什么,只要重复输入q+enter+q+enter+q+enter,就可以一直退出。 - vinczemarton
@ptkvsk 你知道是谷歌把我带到这里的!!!感谢你的帮助... - KodiakMx
显示剩余4条评论
7个回答

1966

您正在使用less程序,这可以使git log的输出可以滚动显示。

输入q以退出此屏幕。 输入h以获取帮助信息。

如果您不想在分页器中阅读输出,并希望它只打印到终端上,请将环境变量GIT_PAGER定义为cat或将core.pager设置为cat(执行git config --global core.pager cat)。


2
我一直按q键:就像退出vi一样!谢谢! - TastyCode
3
要退出vi,请使用:qq:打开一个命令窗口,可以用:q退出(但这不会退出vi)。 - Benjamin Bannier
14
避免使用分页器的最简单方法是:"git log | cat"。我也喜欢执行"git log > /tmp/foo",然后在我选择的编辑器中查看/tmp/foo文件。由于某些原因,这种方法对我更有效。 - Edward Falk
11
我需要的是Win 7中的内容。只有输入Q会导致奇怪的行为,程序会在命令提示符和Vi或类似Win Vi的东西之间来回跳转。 - Erik Reppen
4
我在.gitconfig中设置了core.pager=cat,因此git命令会直接打印它们的输出,除非我显式地通过管道传输到less - Keith Thompson
显示剩余11条评论

146

实际上,有三种确切的方法可以完成它。

键入以下3个命令之一。

  1. :q
  2. :z 或者
  3. Ctrl + z

P.S.: 有时候,对于某些人来说,其中一种选项不起作用,而对于其他人则有效。


我只需要按下q键,因为Git bash中已经添加了“:”。 - shasi kanth
3
CTRL+z 是有效的! - Alma Z
这些是vim命令吗? - AwfulPersimmon
在 macOS 上的 zsh 中,control+Z 会暂停进程,而不是终止。然而,按下 q 可以正常工作。 - Nickensoul

54
在 .bashrc 文件中添加以下别名。
git --no-pager log --oneline -n 10
  • --no-pager参数将遇到“(END)”单词。
  • -n 10参数只显示最后10个提交。
  • --oneline参数将显示提交消息,忽略作者和日期信息。

4
“git --no-pager”是我正在寻找的东西,谢谢! - Zapko
你也可以使用GIT_PAGER=cat git diff来临时使用cat,或者将其保存在你的shell环境中。 - taco

50
您可以按下 q 键退出。 git hist 使用分页工具,因此您可以在返回控制台之前向上或向下滚动结果。

36

END来自于用于显示日志的分页器(此时你仍处于其中)。输入q退出。


11

我想对提到CTRL + Z作为选项的评论表示赞赏。归根结底,这将取决于您在哪个系统上安装了Git以及配置为打开文本文件的程序是什么(例如,less与vim)。在Windows上,CTRL + Z适用于vim。

如果您在Windows环境中使用Git,则可能会遇到一些小问题。只是需要知道它们是什么。(即记事本vs Nano等)。


1
我本不会考虑在终端中运行的 Git 这样的程序与类似记事本这样的图形程序一起使用。 - David A. Gray
1
在类Unix平台上,Ctrl-Z会保留进程但停止它;这只有在Windows上才有意义(在Windows上任何事情都有意义)。 - tripleee

7
在这种情况下,如 snarly 建议的那样,键入 q 是退出 git log 的预期方式(与大多数其他分页器或使用分页器的应用程序一样)。
然而通常情况下,如果你只想中止当前正在执行的命令,你可以尝试使用 ctrl+c(但似乎对于 git log 不起作用)或 ctrl+z(不过在 bash 中,ctrl-z 会冻结当前运行的前台进程,然后可以使用 bg 命令将其解冻为后台进程)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接