加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim-fugitive – 如何运行`git diff -staged`与Fugitive?

发布时间:2020-12-15 18:51:55 所属栏目:安全 来源:网络整理
导读:命令:Gdiff相当于在该文件上运行git diff. git diff -staged或git diff –cached的等价物是什么? 虽然vim-fugitive不提供git diff -staged或git diff -cached的直接类似程序,但它提供了一个通用的Vim命令,用于将任意git命令的输出配置为只读Vim缓冲区:Git
命令:Gdiff相当于在该文件上运行git diff.

git diff -staged或git diff –cached的等价物是什么?

虽然vim-fugitive不提供git diff -staged或git diff -cached的直接类似程序,但它提供了一个通用的Vim命令,用于将任意git命令的输出配置为只读Vim缓冲区:Git!

不适用答案

在我们明白之前,让我们明确地重申一下这个问题. 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.它不能得到任何维米尔.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读