5

私はEmacsを使用しています+それは非常に多くの点で素晴​​らしいmagit-modeでgitを操作します。私のワークフローには、これにマッピングできない側面が 1 つあります。したがって、この質問があります。

別のコミットに作り直す必要があるコミットがある場合があります。マジットでコミットをインタラクティブにリベースし、そのコミットを編集するつもりであることを宣言できます。

ここで、git gui に切り替え、ステージングされた変更を表示する「最後のコミットを修正する」を選択し、別のコミットにしたい部分のステージングを解除する必要があります。次に、コミットし、除外をステージングして、再度コミットします。ほら、履歴に新しいコミットがあります。

これまでのところ、Emacs を使用してこれを達成する方法は見つかりませんでした。ヒントはありますか?

4

1 に答える 1

6

リベースを開始した後、GUI に移動する代わりに HEAD~1 に対して magit-reset-head を実行します。これにより、変更をステージング解除し、必要に応じてステージングしてコミットしてから、最終的にリベースを続行することができます。 magit ステータス バッファ。


シナリオ ワークフローの例:

  1. ファイル A への変更をコミットする (コミット 1)
  2. ファイル B とファイル C への変更をコミットする (コミット 2)
  3. ファイル D への変更をコミットします (コミット 3)
  4. ファイル B とファイル C への変更を別々のコミットにしたいことに気付きます
  5. 走るmagit-log
  6. Eコミット 2 でインタラクティブなリベース ( ) を開始します。
  7. 編集することを指定 ( e) commit 2 して終了 ( C-cC-c)
  8. magit ステータス バッファに戻ります。
  9. 実行magit-reset-head( x)、プロンプトで指定HEAD~1します。
  10. ステージングされた commit 2 の変更が表示されます。
  11. ファイル C への変更をアンステージします。
  12. ファイル B の段階的な変更をコミットします。
  13. ファイル C への変更をステージングしてコミットします。
  14. 続行してリベースを終了しますRC

これで、4 つのコミットがあり、それぞれが A、B、C、D の順序で 1 つのファイルを変更します。

于 2014-11-12T17:00:43.667 に答える