git diff [ --cached ] 显示没有变化,但我发誓有一些



我的 git-diff 刚刚坏了!可能有什么问题?

$ sh # start an unmodified shell

 

sh-4.2$ git --version
git version 2.16.2

 

sh-4.2$ git status --short
M CMakeLists.txt
?? CMakeLists.txt.bak

 

sh-4.2$ git diff
sh-4.2$ echo $?
0

 

sh-4.2$ git add -p
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f527ae0..231dc72 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,7 +101,7 @@
actual diff removed
but this is what U'd expect to see
+when doing git diff
some context
and end of diff
Stage this hunk [y,n,q,a,d,/,e,?]? n

好的,让我们尝试一个新的存储库

sh-4.2$ git init
Initialized empty Git repository in /tmp/tmp.git/.git/
sh-4.2$ echo 42 > answer
sh-4.2$ git add answer 
sh-4.2$ git commit -m"init"
[master (root-commit) 24b402c] init
1 file changed, 1 insertion(+)
create mode 100644 answer
sh-4.2$ echo '7*6' > answer 
sh-4.2$ git status --short
M answer
sh-4.2$ git diff
sh-4.2$ git add -p
diff --git a/answer b/answer
index d81cc07..e2d42c8 100644
--- a/answer
+++ b/answer
@@ -1 +1 @@
-42
+7*6
Stage this hunk [y,n,q,a,d,/,e,?]? n

咦?这可能是一个混乱的麻烦?

sh-4.2$ git config --list
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
core.symlinks=true
core.autocrlf=false
core.fscache=true
core.pager=less -E
core.editor=emacs
user.name=YSC
user.email=YSC@***
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
color.ui=auto
help.format=html
rebase.autosquash=true
alias.st=status -s
alias.l=log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(black)%s%C(reset) %C(magenta)- %an%C(reset)%C(auto)%d%C(reset)' --all
http.sslverify=false
merge.tool=ediff
mergetool.ediff.trustexitcode=false
mergetool.ediff.cmd=emacs --eval "     (progn       (defun ediff-write-merge-buffer ()         (let ((file ediff-merge-store-file))           (set-buffer ediff-buffer-C)           (write-region (point-min) (point-max) file)           (message "Merge buffer saved in: %s" file)           (set-buffer-modified-p nil)           (sit-for 1)))       (setq ediff-quit-hook 'kill-emacs             ediff-quit-merge-hook 'ediff-write-merge-buffer)       (ediff-merge-files-with-ancestor "$LOCAL" "$REMOTE"                                        "$BASE" nil "$MERGED"))"
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

事实上,git diff应该显示您的更改,但有时不会由于寻呼机错误而显示。要检查这一点,请执行以下操作:

git --no-pager diff

如果它显示某些内容,请将寻呼机设置回简单的内容:

git config --global core.pager less

在您给出的配置中,您的寻呼机是:

core.pager=less -E

根据男人少

-E or --QUIT-AT-EOF
Causes  less  to  automatically  exit the first time it
reaches end-of-file.

这意味着,如果您的更改小于终端高度,less会分页它们并在备用屏幕缓冲区打开时立即退出

在 VT102 模式下,有转义序列来激活和停用备用屏幕缓冲区,该缓冲区的大小与窗口的显示区域相同。激活后,当前屏幕将被保存并替换为备用屏幕。在恢复正常屏幕之前,将禁用从窗口顶部滚动的行的保存。xterm 的 termcap(5( 条目允许可视化编辑器 vi(1( 切换到备用屏幕进行编辑,并在退出时恢复屏幕。弹出菜单项使在正常屏幕和备用屏幕之间切换以进行剪切和粘贴变得简单。

(来源(

此选项可以通过terminfo(5)打开/关闭。

最新更新