Git プロジェクト履歴を編集する
Git を使用すると、プロジェクト履歴を編集できます。 これは、機能ブランチで作業していて、他の人と 共有する前に、それをクリーンアップして希望どおりに表示したい場合に便利です。 例: コミットメッセージを編集したり、同じ機能に関連する小さなコミットをまとめたり、無関係な変更を含むコミットを個別のコミットに分割したり、前のコミットに変更を追加したりできます。
コミットメッセージを編集する
変更する必要があるのがコミットメッセージだけであれば、このコミットをプッシュする前に編集できます。
Gitサポート ツールウィンドウ Alt+9 の ログ タブでメッセージを編集するコミットを右クリックし、コンテキストメニューから コミットメッセージの編集 を選択するか、 F2 を押します。
開いたダイアログで、新しいコミットメッセージを入力し、 OK をクリックします。
Amend local commits
Sometimes you may commit too early and forget to add some files, or notice an error in one of your unpushed commits that you want to fix without creating a separate commit.
You can do this by using the コミットの修正 option that appends staged changes to the chosen local commit. その結果、2 つの異なるコミットではなく単一のコミットになります。
In the コミット tool window Alt+0, select the modified files containing the changes you want to add to one of your local commits.
Select the 修正 option and click
to choose the local commit you want to modify.
コミットの修正 をクリックしてください。
以前のコミットを修正する
If you need to add changes to any earlier commit that has already been pushed, you can do this by using the fixup or the squash action. どちらのコマンドも選択したコミットに 段階的な変更を追加しますが、コミットメッセージの扱いは異なります。
squashは新しいコミットメッセージを元のコミットに追加しますfixupは新しいコミットメッセージを破棄し、元のコミットからのメッセージだけを残します
コミット ツールウィンドウ Alt+0 で、以前のコミットに追加する変更を含む変更されたファイルを選択します。
Gitサポート ツールウィンドウ Alt+9 の ログ タブで、ローカルの変更で変更するコミットを右クリックし、コンテキストメニューから フィックスアップ または スカッシュイン を選択します。
変更を破棄することを選択した場合は、コミットメッセージを変更します。
コミット ボタンの矢印をクリックして コミットしてリベース を選択します。
コミットのスカッシュ
同じ機能に関連するコミットをまとめる必要がある場合は、ブランチの履歴をきれいにするために、スカッシュして1つにできます。
Gitサポート ツールウィンドウ Alt+9 の ログ タブで、1 つに結合するコミットを選択し、コンテキストメニューから コミットのスカッシュ を選択します。
開いたダイアログで、コミットメッセージを編集し(デフォルトでは、両方のコミットからのメッセージが含まれています)、 OK をクリックします。
Ctrl+Shift+K をリモートブランチへの変更をプッシュします。
コミットを削除する
現在のブランチでプッシュされたコミットを、 変更を元に戻す追加のコミットを作成せずに破棄できます。
ログ ビューで破棄するコミットを選択し、コンテキストメニューから コミットの削除 を選択します。
選択した変更を抽出
すでにコミットされた変更を複数のコミットに分割する場合は、選択したファイルの変更を別のコミットに抽出できます。
Gitサポート ツールウィンドウ Alt+9 の ログ タブで、ローカルブランチを選択し、分割するコミットを選択します。
右側の 変更されたファイル ペインで、抽出する変更を含むファイルを選択し、右クリックして、 選択した変更を別のコミットに抽出する を選択します。
開いたダイアログで、必要に応じて新しいコミットメッセージを入力します。
その結果、新しいハッシュを持つコミットが 2 つ存在することになります。