我怎样才能从逃犯状态窗口中放弃文件更改?

我怎样才能从逃犯状态窗口中放弃文件更改?

当在逃犯插件 状态窗口,使用 访问:Git,可以使用 对文件进行差异更改D,并使用 切换文件以进行提交-

是否有类似的快捷方式来放弃更改,其中放弃的意思是相当于git checkout -- filename

更新:

发现了有关逃犯的功能请求github问题 #97:检出/删除文件的快捷方式

据此首选方式是使用:Gread :w

更新 2:

U自 2014 年 6 月以来,可以使用安森 以下

更新 3: 自从2019 年 1 月 3 日键绑定映射到X

答案1

截至 2019 年:

此功能已映射到X。以下是:h fugitive-staging-maps有关它的内容:

X                       Discard the change under the cursor.  This uses
                        `checkout` or `clean` under the hood.  A command is
                        echoed that shows how to undo the change.  Consult
                        `:messages` to see it again.  You can use this during
                        a merge conflict do discard "our" changes (--theirs)
                        in the "Unstaged" section or discard "their" changes
                        (--ours) in the "Staged" section.

历史背景:

此功能于 2014 年 6 月添加,默认映射到U

功能请求和讨论:
https://github.com/tpope/vim-fugitive/issues/97

犯罪:
https://github.com/tpope/vim-fugitive/commit/061a81f247538aeb61e165e1551355f289d52f63

答案2

您可以使用逃犯命令Gread用缓冲区文件的各种替代版本替换缓冲区的内容(即,这必须从文件的缓冲区完成,而不是从缓冲区完成:Gstatus)。

  • :Gread(没有参数)将使用索引†中的文件版本。
  • :Gread -将使用来自 HEAD 提交的文件版本。

请参阅文档:help fugitive-revision以获取其他修订规范的列表逃犯支持(上面两个可能是最直接有用的)。

工作:Gread流程如下:

  1. :Gread
  2. 逃犯清除当前缓冲区并从索引中读取内容
  3. 结果:缓冲区现在具有与索引相同的内容。工作树文件未发生改变。
  4. 您可以继续:w将文件保存到工作树(或者:Gread|w如果您知道您需要立即保存它,则使用)。

工作:Git checkout -- %流程如下:

  1. :Git checkout -- %
  2. Git 将索引中文件的版本复制到工作树中的文件中。
  3. Vim 注意到文件已在编辑器外部被更改,并提示您忽略或重新加载。
  4. 你告诉 Vim 重新加载该文件。
  5. 结果:工作树文件和缓冲区现在都具有来自索引的内容。

摘要::Gread避免出现“自编辑开始以来文件已更改”提示,并让您决定何时要在工作树中修改文件。


当缓冲区代表文件的索引阶段而不是工作树中的文件时,:Gread从工作树中磁盘上存在的文件内容读取,而不是索引的第 0 阶段。

答案3

gstatus 到恢复文件的映射:

au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>

答案4

尽管这与 vim 无关,但我还是想告诉你我有时会这样做:

$ git status
...
#
#   modified:   .rvmrc
#   modified:   app/views/admin/base/index.html.erb
#   modified:   config/routes.rb
#
...

$ # mouse-copy the files i want to reset, and paste them into the next command

$ cat | xargs git checkout
app/views/admin/base/index.html.erb
config/routes.rb
^D

很快的完成工作。

相关内容