无法获取git以自动将diff / log传递给less(bash on windows)

时间:2017-03-18 06:20:38

标签: git less pager

基本上,我希望git diff和git log能够自动管道化,这样我的提示就不会被代码弄得乱七八糟。

例如,当我运行“git diff”时,我得到以下输出

WarriorPoet@JARVIS: /mnt/c/../Robot_one -> git diff
diff --git a/lib/movement/movement.cpp b/lib/movement/movement.cpp
index 523c2c1..3e323d6 100644
--- a/lib/movement/movement.cpp
+++ b/lib/movement/movement.cpp
@@ -1,6 +1,10 @@
// bunch
// of
// code
WarriorPoet@JARVIS: /mnt/c/../Robot_one -> _

我的全局.gitconfig具有以下内容:

[core]
   whitespace = cr-at-eol
   excludesfile = ~/.gitignore
   pager = less -R
[pager]
   diff = true

我没有我知道的本地.gitconfig文件。

编辑:

运行'git config --global -l | grep pager'

core.pager=less -R
pager.diff=true

运行'git config --local -l | grep pager'没有产生输出,而 'git config --system -e'是空的。

我正在Windows上运行Ubuntu上的Bash,在Windows 10上运行。

2 个答案:

答案 0 :(得分:0)

  

我没有我所知道的本地.gitconfig文件。

您可以使用git config -l --show-origin

进行检查

查看项目stevemao/diff-so-fancy是否可以清除git diff

然后,您可以使用页面来管道其结果:

git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"

这会给你:

  

git diff vs git diff --color | diff-so-fancy

https://cloud.githubusercontent.com/assets/39191/13622719/7cc7c54c-e555-11e5-86c4-7045d91af041.png

答案 1 :(得分:0)

如果您在要进行差异化的仓库中,可以使用

检查所有配置值(包括本地配置值)

git config -l

这将列出键值对。您还可以使用

过滤寻呼机值

git config -l | grep pager

查看是否有任何本地配置值覆盖了您的全局配置值。

此外,如果您使用的是较旧版本的git(我认为小于2.8)git config -l --show-origin无法正常工作。您可以使用

作为解决方法

git config --system -e

git config --global -e

git config --local -e

使用配置文件打开配置的编辑器并找到位置。例如,如果Notepad ++是您配置的编辑器,那么文件位置将显示在顶部。