Magit-最後のコミットを元に戻す-履歴操作


12

このStackOverflowの質問には、最後のコミットを取り消すための最良のソリューション/アプローチがあります。

私は2週間前にMagitを使い始めましたが、そのすべてのドキュメントを調べた後でも、誤ってコミットされた変更を取り消すための確実で最良の方法はまだありません。

次に例を示します。
最後のコミットを元に戻したりやり直したりするには、次のコマンドを使用できます。

$ git commit -m "Something terribly misguided"
$ git reset HEAD~
<< edit files as necessary >>
$ git add ... 
$ git commit -c ORIG_HEAD # To keep the same commit message

Magitを使用してこの手順を再現するには、どのワークフローが最適ですか?

回答:


17

使用できますmagit-reset(デフォルトではにバインドされていますx)。時点でのコミットがプロンプトのデフォルトとして使用されますが、任意のリビジョン値を入力できます(ここでは「HEAD〜」)。

リセットコマンドは、マニュアルの「リセット」セクションで説明されています:https : //magit.vc/manual/magit/Resetting.html

コミットメッセージを再利用するに=Cは、コミットポップアップのオプションを使用できます。残念なことに、プロンプトは現在完了値を提供していません(おそらく少なくともを提供するはず ORIG_HEADです)が、リセットする前に、現在のコミットのハッシュをキルリングに配置できます(たとえば、C-w"Head:"行にステータスバッファの)、リセット後、=Cオプションの値としてヤンクします。


追加のコメント:

  • を使用する代わりに=C、コミット(cc)を開始してからgit-commit-prev-messageM-p)を使用して前のメッセージを循環する方が便利な場合があります。

  • 最後のコミットのみを変更する場合は、magit-commit-amendca)またはmagit-commit-extendce)を使用して、前のコミットへの段階的な変更を追加できます。(後者は、COMMIT_EDITMSGバッファーをバイパスして、コミットメッセージを再利用します。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.