web-dev-qa-db-ja.com

逃亡者のステータスウィンドウからファイルの変更を破棄するにはどうすればよいですか?

fugitive-pluginstatus window:Gstatusを使用してアクセスすると、次のコマンドを使用してファイルの変更を比較できます。 D を使用してコミットするファイルを切り替えます -

変更を破棄するための同様のショートカットはありますか?破棄とは、git checkout -- filenameに相当するものを意味しますか?

更新:

逃亡者に機​​能リクエストが見つかりました github ページ 問題#97:ファイルのチェックアウト/削除へのショートカット

それによると、推奨される方法は:Gread:wを使用することです

更新2:

2014年6月以降、 UAnsonbelow と回答。

更新3:以降 2019年1月3日 キーバインドがマッピングされます X

34
tidbeck

この機能は2014年6月に追加され、デフォルトで次の場所にマッピングされています U

この情報は、ヘルプファイルの:h :Gstatusの下にあります。

     U     |:Git| checkout HEAD

機能のリクエストとディスカッション:
https://github.com/tpope/vim-fugitive/issues/97

コミット:
https://github.com/tpope/vim-fugitive/commit/061a81f247538aeb61e165e1551355f289d52f6

28
Anson

fugitiveGreadコマンドを使用して、バッファーの内容をバッファーのファイルのさまざまな代替バージョンで置き換えることができます(つまり、これは:Gstatusバッファからではなく、ファイルのバッファから実行されます)。

  • :Gread(引数なし)は、インデックスからのファイルのバージョンを使用します
  • :Gread -は、HEADコミットからのファイルのバージョンを使用します。

fugitiveがサポートする他のリビジョン仕様のリストについては、:help fugitive-revisionのドキュメントを参照してください(上記の2つはおそらく最もすぐに役立つものです)。

:Greadワークフローは次のように進行します:

  1. :Gread
  2. fugitiveは現在のバッファをクリアし、インデックスからコンテンツを読み込みます
  3. 結果:バッファは現在、インデックスと同じ内容を持っています。作業ツリーファイルは変更されません。
  4. :wを使用して、ファイルを作業ツリーに保存できます(または、すぐに保存する場合は:Gread|wを使用します)。

:Git checkout -- %ワークフローは次のように進行します:

  1. :Git checkout -- %
  2. Gitは、インデックス内のファイルのバージョンを作業ツリー内のファイルにコピーします。
  3. Vimはファイルがエディターの外で変更されたことを認識し、無視するか再ロードするように求めます。
  4. Vimにファイルをリロードするように指示します。
  5. 結果:作業ツリーファイルとバッファの両方に、インデックスの内容が含まれるようになりました。

概要::Greadは、「編集の開始後にファイルが変更されました」というプロンプトを回避し、作業ツリーでファイルをいつ変更するかを決定できるようにします。


バッファが作業ツリーのファイルではなくファイルのインデックスステージを表す場合、:Greadは、インデックスのステージ0ではなく作業ツリーのディスクに存在するファイルの内容から読み取ります。

15
Chris Johnsen

ファイルを元に戻すためのgstatusのマッピング:

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

さて、あなたは:help fugitive

どうやら、このGit機能へのショートカットはありません。

0
romainl

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

仕事を素早く終える。

0
Valer