我在OS X 10约塞米蒂的终端上使用git。当我执行git diff时,我会得到一长串的修改,有时我只需要滚动到最后,但我想不出一种方法来做到这一点,除了在MacBook Pro上按住keydown键,然后它会慢慢滚动。如果我按FN+向下键,那么它不会滚动,除非我已经使用向下按钮向下滚动,但不会进一步向下...任何建议都会很感激,这很烦人
o8x7eapl1#
git diff使用与less Unix命令相同的寻呼机。
git diff
d
u
G
h
另一个技巧是将差异存储为补丁文件,就像他们在电子邮件时代所做的那样!然后你可以在任何程序中打开补丁(Sublime有语法高亮显示红色/绿色)一些例子:git diff master > ~/patchgit show someCommitSHA > ~/patchjs和css的git diff master myBranch -- *.js *.css > ~/patch修补程序与主程序不同git apply ~/patch通常你会通过应用diff来使用补丁,但是你可以在任何文本编辑器中打开文件.如果你不想完全提交diff文件,但仍然想在其他地方使用它或将其发送给朋友,这是很有用的您还可以使用git diff master | grep -C 2 someKeyword在某个关键字周围显示+/- 2行的差异
git diff master > ~/patch
git show someCommitSHA > ~/patch
git diff master myBranch -- *.js *.css > ~/patch
git apply ~/patch
git diff master | grep -C 2 someKeyword
6ioyuze22#
第一个月在我的新macOS笔记本电脑上,git日志滚动功能如我所料(向上翻页/向下翻页按钮、颜色、滚轮滚动)。为什么这样做?根据git-config manpage:注意,如果在运行分页器时LESS环境变量未被设置,git会将其设置为FRSX。根据less manpage:-X禁止向终端发送termcap初始化和取消初始化字符串。如果取消初始化字符串做了一些不必要的事情,比如清除屏幕,这有时是可取的。我实际上不知道这是什么意思,但X打破了翻页/翻页/滚轮。-F如果整个文件可以显示在第一个屏幕上,则会导致less自动退出。如果没有X,则F在没有分页时中断,大概是因为less立即退出,并且有一些东西阻止它直接打印到终端。
sf6xfgos3#
根据mzabaluev的评论:OS X终端与less有一些神奇的集成,但当git将less作为子进程运行时,这种集成就会中断:当以git diff运行时|less,touchpad手势可以向前滚动,但是git diff的输出只能滚动终端输出,不能告诉less向前滚动。有趣的是,git help没有这个问题。-mzabaluev Jan 4 at 0:39这种魔力还包括启用向上翻页(FN+up)和向下翻页(FN+down)。一种快速而又不太实用的方法是自己调用less:
less
git diff --color=always | less -r
命令行选项保留了git的彩色输出。我从Can less retain colored output?得到的
qyswt5oh4#
您可以使用任意less命令来浏览历史记录。请参阅:常用较少命令例如:在终端的左下角,您一定会看到这样的内容。
在上面的例子中,历史具有221行,其中当前窗口示出第21 - 62行。
line-number (followed by) g (no spaces necessary)
例如:要转到第100行,只需键入100g
100g
或使用以下选项。按ILI的建议按空格键。
点击"w""回家吧"Fn左箭头转到结尾Fn右箭头
y53ybaqx5#
brew install less git config --global core.pager "less -+\$LESS -RSF"
安装较新版本的less修复了-F导致小输出在没有-X的情况下完全消失的bug,然后config命令删除了-X,这是破坏滚动的原因。这将用最新版本替换MacOS附带的less版本,但由于它们是相同的实用程序(不像GNU coreutils与BSD coreutils),这不应该破坏东西。
-F
-X
这是对ognockocaten's answer的扩展。这个答案意味着:
git config --global core.pager "less -+\$LESS -RS"
这将删除两个选项:-F/--quit-if-one-screen:如果整个文件可以显示在第一个屏幕上,则会导致less自动退出。以及-X/--no-init:
--quit-if-one-screen
--no-init
487
530
所以只要重新添加-F,你会得到小的输出被完全删除,就像他们从来没有打印过。我们不能重新添加-X来解决这个问题,因为这会破坏滚动,但我们 * 可以 * 更新到一个新版本的less!因此,这一切都在一起-我们可以使用homebrew安装最新的稳定的less版本,然后配置寻呼机,以包括-F选项,根据命令块在本文开始。
vjrehmav6#
最简单的方法是使用less来读取diff输出,您需要使用--color和-R选项来保持着色。
--color
-R
git diff --color | less -R
这对我来说很好。您可以为此命令创建宏。自从我写了这个答案之后,我发现您可以使用LESS环境变量来设置less的选项,这样您就可以更容易地执行上面的操作:
LESS
LESS=R git diff
kjthegm67#
只需在git diff后打开较少的终端中按下h-它会调用带有快捷方式的帮助窗口screenshot with less help text
ifmq2ha28#
在@ognockocaten的答案的基础上,您可以通过更改LESS环境变量来更改传递给less命令的默认选项。为此,将这一行添加到启动脚本中(可能是~/.bashrc、~/.zshrc或~/.bash_profile)。
~/.bashrc
~/.zshrc
~/.bash_profile
export LESS="RS"
而且它应该对你打开的任何新终端都有效。
ovfsdjhp9#
fn +选项()+向下在Mac上为我工作
9条答案
按热度按时间o8x7eapl1#
git diff
使用与less Unix命令相同的寻呼机。d
和u
键向下/向上移动半页(技术上向前/向后)G
h
另一个技巧是将差异存储为补丁文件,就像他们在电子邮件时代所做的那样!然后你可以在任何程序中打开补丁(Sublime有语法高亮显示红色/绿色)
一些例子:
git diff master > ~/patch
git show someCommitSHA > ~/patch
js和css的
git diff master myBranch -- *.js *.css > ~/patch
修补程序与主程序不同git apply ~/patch
通常你会通过应用diff来使用补丁,但是你可以在任何文本编辑器中打开文件.如果你不想完全提交diff文件,但仍然想在其他地方使用它或将其发送给朋友,这是很有用的
您还可以使用
git diff master | grep -C 2 someKeyword
在某个关键字周围显示+/- 2行的差异6ioyuze22#
第一个月
在我的新macOS笔记本电脑上,git日志滚动功能如我所料(向上翻页/向下翻页按钮、颜色、滚轮滚动)。
为什么这样做?根据git-config manpage:
注意,如果在运行分页器时LESS环境变量未被设置,git会将其设置为FRSX。
根据less manpage:
-X禁止向终端发送termcap初始化和取消初始化字符串。如果取消初始化字符串做了一些不必要的事情,比如清除屏幕,这有时是可取的。
我实际上不知道这是什么意思,但X打破了翻页/翻页/滚轮。
-F如果整个文件可以显示在第一个屏幕上,则会导致less自动退出。
如果没有X,则F在没有分页时中断,大概是因为less立即退出,并且有一些东西阻止它直接打印到终端。
sf6xfgos3#
根据mzabaluev的评论:
OS X终端与less有一些神奇的集成,但当git将less作为子进程运行时,这种集成就会中断:当以git diff运行时|less,touchpad手势可以向前滚动,但是git diff的输出只能滚动终端输出,不能告诉less向前滚动。有趣的是,git help没有这个问题。-mzabaluev Jan 4 at 0:39
这种魔力还包括启用向上翻页(FN+up)和向下翻页(FN+down)。
一种快速而又不太实用的方法是自己调用
less
:命令行选项保留了git的彩色输出。我从Can less retain colored output?得到的
qyswt5oh4#
您可以使用任意less命令来浏览历史记录。请参阅:常用较少命令
例如:在终端的左下角,您一定会看到这样的内容。
在上面的例子中,历史具有221行,其中当前窗口示出第21 - 62行。
例如:要转到第100行,只需键入
100g
或使用以下选项。
按ILI的建议按空格键。
点击"w"
"回家吧"
Fn左箭头转到结尾Fn右箭头
y53ybaqx5#
安装较新版本的less修复了
-F
导致小输出在没有-X
的情况下完全消失的bug,然后config命令删除了-X
,这是破坏滚动的原因。这将用最新版本替换MacOS附带的
less
版本,但由于它们是相同的实用程序(不像GNU coreutils与BSD coreutils),这不应该破坏东西。解释
这是对ognockocaten's answer的扩展。
这个答案意味着:
这将删除两个选项:
-F
/--quit-if-one-screen
:如果整个文件可以显示在第一个屏幕上,则会导致less自动退出。
以及
-X
/--no-init
:这对于当前的问题是有效的,但不是最优的,因为
less
总是切换到一个备用页面,不管输出有多小。所以,即使是像git diff
这样的小命令,你也会得到一个完整的备用屏幕。仔细阅读,重新添加
-F
似乎可以解决这个问题,但是,两个因素的组合会导致这个问题:487
上,less将在检查文本是否足够小之前 * 首先 * 切换到备用屏幕,从而将输出打印到备用屏幕缓冲区。此问题在版本530
中得到修复(请参阅https://unix.stackexchange.com/a/107355/39135)-X
,则从备用缓冲区切换回主缓冲区会清除屏幕,从而擦除刚刚打印到备用屏幕缓冲区的所有文本。所以只要重新添加
-F
,你会得到小的输出被完全删除,就像他们从来没有打印过。我们不能重新添加-X
来解决这个问题,因为这会破坏滚动,但我们 * 可以 * 更新到一个新版本的less
!因此,这一切都在一起-我们可以使用homebrew安装最新的稳定的
less
版本,然后配置寻呼机,以包括-F
选项,根据命令块在本文开始。vjrehmav6#
最简单的方法是使用
less
来读取diff输出,您需要使用--color
和-R
选项来保持着色。这对我来说很好。
您可以为此命令创建宏。
自从我写了这个答案之后,我发现您可以使用
LESS
环境变量来设置less
的选项,这样您就可以更容易地执行上面的操作:kjthegm67#
只需在
git diff
后打开较少的终端中按下h
-它会调用带有快捷方式的帮助窗口screenshot with less help text
ifmq2ha28#
在@ognockocaten的答案的基础上,您可以通过更改
LESS
环境变量来更改传递给less
命令的默认选项。为此,将这一行添加到启动脚本中(可能是
~/.bashrc
、~/.zshrc
或~/.bash_profile
)。而且它应该对你打开的任何新终端都有效。
ovfsdjhp9#
fn +选项()+向下
在Mac上为我工作