使 git diff 不打印到终端
Make git diff not to print to terminal
如果我做less somefile.txt
或man bash
(在内部使用less
),它会显示内容,但是在按下Q之后,内容消失。
git diff
也使用 less
,但输出保留在控制台中。我怎样才能使 git
与 man
的行为相同?
当前行为
me@mypc:~$ git diff
# I look at the diff and then press q. But it's all printed to the console
diff --git a/somefile.txt b/somefile.txt
...
...
...
me@mypc:~$
me@mypc:~$ less somefile.txt
# I look at the file content, but after I press q, console appears and nothing is printed there
me@mypc:~$
我意识到 git 的行为类似于 less -X
,那么如果没有该选项,我如何强制 git 减少 运行?
这是less -F -X
的效果;参见 git-config(1)
中的 core.pager
。
来自less(1)
:
-F or --quit-if-one-screen
Causes less to automatically exit if the entire file can be dis‐
played on the first screen.
-X or --no-init
Disables sending the termcap initialization and deinitialization
strings to the terminal. This is sometimes desirable if the
deinitialization string does something unnecessary, like clear‐
ing the screen.
这里提到的"init"部分涉及切换到备用屏幕,以便保留主屏幕。
来自git-config(1)
:
core.pager
Text viewer for use by Git commands (e.g., less). The value is
meant to be interpreted by the shell. The order of preference is
the $GIT_PAGER environment variable, then core.pager configuration,
then $PAGER, and then the default chosen at compile time (usually
less).
When the LESS environment variable is unset, Git sets it to FRX (if
LESS environment variable is set, Git does not change it at all).
If you want to selectively override Git’s default setting for LESS,
you can set core.pager to e.g. less -S. This will be passed to the
shell by Git, which will translate the final command to LESS=FRX
less -S. The environment does not set the S option but the command
line does, instructing less to truncate long lines. Similarly,
setting core.pager to less -+F will deactivate the F option
specified by the environment from the command-line, deactivating
the "quit if one screen" behavior of less. One can specifically
activate some flags for particular commands: for example, setting
pager.blame to less -S enables line truncation only for git blame.
Likewise, when the LV environment variable is unset, Git sets it to
-c. You can override this setting by exporting LV with another
value or setting core.pager to lv +c.
如果我做less somefile.txt
或man bash
(在内部使用less
),它会显示内容,但是在按下Q之后,内容消失。
git diff
也使用 less
,但输出保留在控制台中。我怎样才能使 git
与 man
的行为相同?
当前行为
me@mypc:~$ git diff
# I look at the diff and then press q. But it's all printed to the console
diff --git a/somefile.txt b/somefile.txt
...
...
...
me@mypc:~$
me@mypc:~$ less somefile.txt
# I look at the file content, but after I press q, console appears and nothing is printed there
me@mypc:~$
我意识到 git 的行为类似于 less -X
,那么如果没有该选项,我如何强制 git 减少 运行?
这是less -F -X
的效果;参见 git-config(1)
中的 core.pager
。
来自less(1)
:
-F or --quit-if-one-screen
Causes less to automatically exit if the entire file can be dis‐
played on the first screen.
-X or --no-init
Disables sending the termcap initialization and deinitialization
strings to the terminal. This is sometimes desirable if the
deinitialization string does something unnecessary, like clear‐
ing the screen.
这里提到的"init"部分涉及切换到备用屏幕,以便保留主屏幕。
来自git-config(1)
:
core.pager
Text viewer for use by Git commands (e.g., less). The value is
meant to be interpreted by the shell. The order of preference is
the $GIT_PAGER environment variable, then core.pager configuration,
then $PAGER, and then the default chosen at compile time (usually
less).
When the LESS environment variable is unset, Git sets it to FRX (if
LESS environment variable is set, Git does not change it at all).
If you want to selectively override Git’s default setting for LESS,
you can set core.pager to e.g. less -S. This will be passed to the
shell by Git, which will translate the final command to LESS=FRX
less -S. The environment does not set the S option but the command
line does, instructing less to truncate long lines. Similarly,
setting core.pager to less -+F will deactivate the F option
specified by the environment from the command-line, deactivating
the "quit if one screen" behavior of less. One can specifically
activate some flags for particular commands: for example, setting
pager.blame to less -S enables line truncation only for git blame.
Likewise, when the LV environment variable is unset, Git sets it to
-c. You can override this setting by exporting LV with another
value or setting core.pager to lv +c.