Git プロジェクト履歴を編集する
Git を使用すると、プロジェクト履歴を編集できます。 これは、機能ブランチで作業していて、他の人と 共有する前に、それをクリーンアップして希望どおりに表示したい場合に便利です。 例: コミットメッセージを編集したり、同じ機能に関連する小さなコミットをまとめたり、無関係な変更を含むコミットを個別のコミットに分割したり、前のコミットに変更を追加したりできます。
コミットメッセージを編集する
変更が必要なのがコミットメッセージだけであれば、コミットをプッシュする前に編集できます。
Git ツールウィンドウ Alt+9 の ログ タブでメッセージを編集するコミットを右クリックし、コンテキストメニューから コミットメッセージの編集 を選択するか、 F2 を押します。
開いたダイアログで、新しいコミットメッセージを入力し、 OK をクリックします。
ローカルコミットを修正する
場合によっては、コミットが早すぎてファイルの追加を忘れてしまったり、プッシュしていないコミットの中にエラーがあることに気づいて、別のコミットを作成せずに修正したい場合があります。
コミットの修正 オプションを使用すると、 ステージングされた変更が選択したローカルコミットに追加されるため、これを実現できます。 結果として、2 つの異なるコミットではなく、1 つのコミットが作成されます。
コミット ツールウィンドウ Alt+0 で、ローカルコミットに追加したい変更を含む変更済みファイルを選択します。
修正 オプションを選択し、
をクリックして、変更したいローカルコミットを選択します。
コミットの修正 をクリックします。
以前のコミットを修正する
すでにプッシュ済みの以前のコミットに変更を追加する必要がある場合は、 fixup または squash アクションを使用することで可能です。 どちらのコマンドも ステージングされた変更を選択したコミットに追加しますが、コミットメッセージの処理方法が異なります。
squashは新しいコミットメッセージを元のコミットに追加しますfixupは新しいコミットメッセージを破棄し、元のコミットからのメッセージだけを残します
コミット ツールウィンドウ Alt+0 で、以前のコミットに追加する変更を含む変更されたファイルを選択します。
Git ツールウィンドウ Alt+9 の ログ タブで、ローカルの変更で変更するコミットを右クリックし、コンテキストメニューから フィックスアップ または スカッシュイン を選択します。
変更を破棄することを選択した場合は、コミットメッセージを変更します。
コミット ボタンの矢印をクリックして コミットしてリベース を選択します。
コミットをスカッシュする
同じ機能に関連するコミットをまとめる必要があれば、ブランチ履歴をよりクリーンにするためにスカッシュできます。
Git ツールウィンドウ Alt+9 の ログ タブで、1 つに結合するコミットを選択し、コンテキストメニューから コミットのスカッシュ を選択します。
開いたダイアログで、コミットメッセージを編集し(デフォルトでは、両方のコミットからのメッセージが含まれています)、 OK をクリックします。
Ctrl+Shift+K をリモートブランチへの変更をプッシュします。
コミットを削除する
変更を元に戻す追加のコミットを作成せずに、現在のブランチでプッシュ済みのコミットを破棄できます。
ログ ビューで破棄するコミットを選択し、コンテキストメニューから コミットの削除 を選択します。
選択した変更を抽出
すでにコミットされた変更を複数のコミットに分割する場合は、選択したファイルの変更を別のコミットに抽出できます。
Git ツールウィンドウ Alt+9 の ログ タブで、ローカルブランチを選択し、分割するコミットを選択します。
右側の 変更されたファイル ペインで、抽出する変更を含むファイルを選択し、右クリックして、 選択した変更を別のコミットに抽出する を選択します。
開いたダイアログで、必要に応じて新しいコミットメッセージを入力します。
その結果、新しいハッシュを持つコミットが 2 つ存在することになります。