我在OS X 10优胜美地的终端上使用git.
当我做git diff时,我会得到很长的变化列表,有时我只需要滚动到最后但我无法找到一种方法来做到这一点,而不是在MacBook Pro上保持keydown然后它慢慢滚动.
如果我按下FN +向下键,那么它不会滚动,除非我已经使用向下按钮向下滚动了下来的旅程,但是没有进一步向下...
任何建议将会欣赏这是非常烦人的... :(
nea*_*sic 26
git diff
使用相同的寻呼机作为较少的 Unix命令.
d
和u
向下/向上翻页半页(技术上向前/向后)G
h
,如果你想显示帮助另一个技巧是将diff作为补丁文件存储,就像他们在电子邮件时代那样做!然后你可以在任何程序中打开补丁(Sublime的语法高亮显示红色/绿色)
一些例子:
git diff master > ~/patch
git show someCommitSHA > ~/patch
git diff master myBranch -- *.js *.css > ~/patch
来自master的js&css diff补丁
git apply ~/patch
通常你会通过应用diff来使用补丁,但你可以在任何文本编辑器中打开文件.如果您不想完全提交您的差异,但仍想在其他地方使用它或将其发送给朋友,这将非常有用
您还可以使用
git diff master | grep -C 2 someKeyword
在某些关键字周围显示diff +/- 2行
ogn*_*ten 14
git config --global core.pager "less -+\$LESS -RS"
在我的新 macOS 笔记本电脑上,git log 滚动按我的预期工作(向上翻页/向下翻页按钮工作,颜色,滚轮滚动)。
为什么这样做?根据git-config 联机帮助页:
请注意,如果在运行寻呼机时未设置 LESS 环境变量,则 git 会将 LESS 环境变量设置为 FRSX。
根据较少的联机帮助页:
-X 禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串做了一些不必要的事情,比如清除屏幕,这有时是可取的。
我实际上不知道这意味着什么,但是 X 向上翻页/向下翻页/滚轮。
-F 如果整个文件可以显示在第一个屏幕上,则使less自动退出。
如果你没有 X,那么 F 会在没有分页时中断,大概是因为 less 立即退出并且某些东西阻止它直接打印到终端。
根据 mzabaluev 的评论:
OS X 终端与 less 有一些神奇的集成,当 less 作为 git 作为子进程运行时会中断: when run as git diff | 更少,使用触摸板手势可以向前滚动,但是使用 git diff 的输出它只会滚动终端输出,而不能告诉 less 向前滚动。有趣的是, git help 没有遇到这个问题。– mzabaluev 1 月 4 日0:39
这个魔法还包括启用向上翻页 (FN+up) 和向下翻页 (FN+down)。
解决此问题的一种快速而肮脏的方法是调用less
自己:
git diff --color=always | less -r
Run Code Online (Sandbox Code Playgroud)
命令行选项保留了 git 的彩色输出。我从Can less 保留彩色输出中得到它们?
brew install less
git config --global core.pager "less -+\$LESS -RSF"
Run Code Online (Sandbox Code Playgroud)
安装较新版本的 less 修复了-F
导致小输出在没有 的情况下完全消失的错误-X
,然后配置命令删除-X
,这就是中断滚动的原因。
这将取代less
MacOS 附带的最新版本,但由于它们是相同的实用程序(与 GNU coreutils 和 BSD coreutils 不同),因此这不会破坏任何东西。
该答案表明:
git config --global core.pager "less -+\$LESS -RS"
Run Code Online (Sandbox Code Playgroud)
这会删除两个选项:
-F
/ --quit-if-one-screen
:
如果整个文件可以在第一个屏幕上显示,则导致 less 自动退出。
和-X
/ --no-init
:
-X 禁止将 termcap 初始化和取消初始化字符串发送到终端。如果去初始化字符串执行一些不必要的操作(例如清除屏幕),有时这是可取的。
这适用于当前的问题,但不是最理想的,因为less
无论输出有多小,它总是会切换到备用页面。因此,即使对于像这样的小命令git diff
,您也会得到一个完整的备用屏幕。
仔细阅读,似乎重新添加-F
可以解决这个问题。然而,有两件事的结合导致了这种情况的发生:
487
切换到备用屏幕,然后检查文本是否足够小,然后将输出打印到备用屏幕缓冲区。这已在版本中修复(请参阅https://unix.stackexchange.com/a/107355/39135)530
-X
,从备用缓冲区切换回主缓冲区会清除屏幕,从而擦除刚刚打印到备用屏幕缓冲区的所有文本。因此,只需重新添加-F
,您就会得到完全擦除的小输出,就好像它们从未被打印过一样。我们无法重新添加-X
来解决此问题,因为这会中断滚动,但我们可以更新到较新版本的less
!
因此,这一切都汇集在一起 - 我们可以使用自制程序安装最新的稳定less
版本,然后配置寻呼机以包含该-F
选项,按照本文开头的命令块。
您可以使用任何 less 命令来浏览历史记录。请参阅:常用的 less 命令
在上面的示例中,历史记录有 221 行,当前窗口显示其中的第 21-62 行。
直接转到行号:您可以通过键入直接转到行号
line-number (followed by) g (no spaces necessary)
Run Code Online (Sandbox Code Playgroud)
例如:要转到第 100 行,只需输入100g
跳过 x 行: 输入一个数字并按 Enter 键。
向下滚动并向下滚动 使用 Fn
或者使用下面的替代方案。
按空格键。正如 ILI 建议的那样。
向上滚动一页
按“w”
回家
Fn 向左箭头 转至结尾 Fn 向右箭头
最简单的方法是使用less
读取 diff 输出。您需要使用--color
和-R
选项来保持颜色。
git diff --color | less -R
Run Code Online (Sandbox Code Playgroud)
这对我来说效果很好。
您可以为此命令创建一个宏。
自从我写了这个答案以来,我发现您可以使用LESS
环境变量来设置 的选项less
,因此您可以更轻松地执行与上面相同的操作:
LESS=R git diff
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6724 次 |
最近记录: |