git diff -staged或git diff –cached的等价物是什么?
不适用答案
在我们明白之前,让我们明确地重申一下这个问题. git diff -staged和git diff –cached是相同底层操作的同义词:将索引的内容(所有分段更改的集合)与HEAD的内容(当前分支的最近提交)进行差异化,通常用于在提交之前检查更改.所提出的问题就是:
What is the most effective means of reviewing all staged changes in
vim-fugitive
?
应该清楚的是,目前接受的自我回答未能解决这个问题.下一个最高评分的自我回答没有更好.
:Gstatus绑定仅适用于当前行中的文件,因此无法定义用于查看所有分段更改.此外,Gstatus D绑定甚至不会查看当前行中文件的所有分段更改.它只会分辨该文件的索引和工作树副本,而不是分辨该文件(这是完全不同的野兽)的索引和最近提交的副本.
:Gdiff HEAD同样不适用.它只会使与当前缓冲区对应的文件的最近提交和工作树副本不同. :没有参数的Gdiff等价于:Gstatus D绑定,再次分割该文件的索引和工作树副本.也不会审查所有分段更改.
适用答案
:Git diff --staged
现在我们逼近真相!
:将传递的git命令的输出管道传输到当前的外部寻呼机,允许对Vim外部的所有分阶段更改进行实质性审查.但是有一个擦除:Vim外部.这意味着没有Vim绑定,缓冲区或语法突出显示.理想情况下,我们更喜欢只读Vim缓冲区语法,突出显示git diff -staged的输出.我们可以做到吗
解决方案
我们可以,或者Tim Pope不是Vim教皇. !的补码变体:Git只是这样,允许对Vim中所有分阶段更改进行谎言审查,完整的基于Vim的语法突出显示变化差异:
:Git! diff --staged
是啊.这真的很棒
但是让我们走得更远.在任何地方懒惰的懒惰者的悠久传统中,我们定义一个新的Vim命令:Greview封装此操作和运行此命令的新绑定< leader> gr.只需将以下内容存入您的.vimrc:
command Greview :Git! diff --staged nnoremap <leader>gr :Greview<cr>
假设< leader>要查看所有分阶段的变化减少到,gr.它不能得到任何维米尔.