magit 2.1.0にアップグレードしました。(そしてemacs 25.0.50とgit 2.3.1にも。)
以前は、*magit*
バッファーで次のことができました。
- [ステージなし]領域でハンクを選択します。
- v「yes」と入力して反転します。
これは便利でした。
しかし、現在、magit 2.1.0ではエラーが発生します"Cannot reverse unstaged changes"
。
どうして?
エラーメッセージからヒントを得て、私はこれを行うことができることを発見しました。
- s塊を切り刻む。(後方に移動し、コミット状態に近づけます。)
- 下に移動して、[ステージ]エリアで選択します。
- を押してv、はいと答えます。
- ただし、ハンクはまだuステージングされているため、最終的にハンクをステージングする必要があります。
これはバグですか、それとも意図的なものですか、そして/または私は密集していますか?後者の場合、理解を助けてもらえますか?
更新:完全にRTFinfo-ingを実行した後、2つのコマンドがあることがわかりました。
- v
magit-reverse
作業ツリーのポイントで変更を元に戻します。 - k
magit-discard
作業ツリーからポイントの変更を削除します。
それはk magit-discard
私がv前にやっていたことに慣れていることを行うようです。ステージングされていないハンクで動作します。
したがって、実際には、使用する筋肉の記憶を再訓練する必要がありますk。自己回答として投稿することもできます。しかし、私はそれを理解することが全体的にマギットをよりよく理解するのに役立つと思うので、私はまだ理論的根拠に興味があると思います。
k
magitの以前のバージョンでもコミットされていない変更を破棄し、あなたがしていることに対して適切なコマンドのようです。v
git revertの場合:前のコミットと反対の変更を行う新しいコミットを作成します。実際にコミットされていない変更を元に戻すことは、それを破棄することと同じですが、「元に戻す」にはgitコマンドとして特定の意味があります。
v
バインドされたように見えますmagit-revert-item
(「逆」の用語はそこから来ています、@ PythonNut)、ステージングされていないアイテムの場合、これはmagit-discard-item
(同様にバインドされていますk
)- ここの行4872を参照してください。どうやらv
、使用することを学ばなければならなかったときに、それが機能するという特別な意味を偶然知ったようk
です。