間違いはよくあることです、私たちは皆それを作ります。 だから彼らは鉛筆に消しゴムをつけました。 そして、これはGitのようなツールでも違いはありません。 一部の変更は元に戻すのが難しい場合がありますが、通常は方法があります。
では、既存のコミットメッセージを変更したい場合はどうでしょうか。 幸い、これはGitで簡単に実行できますが、いくつかの要因によってメソッドが少し変わる場合があります。
まだリモートにプッシュされていない最後のコミットを修正
リモートリポジトリを変更する必要がないため、これは最も単純なケースです。自分のリポジトリを変更するだけです。 この場合、次のコマンドを使用できます。
$ git commit --amend
このコマンドを実行すると、エディターが開き、ここで変更できます。 last コミットメッセージ。 完了してエディターを保存/閉じると、コミットメッセージが変更されます。
個人的には、コマンドラインでほとんどのことを実行することを好みます。これは、上記のコマンドに引数とメッセージを追加することで実行できます。
$ git commit --amend -m "Added a new file"
この方法でエディターを開くことはできませんが、代わりにコミットメッセージをすぐに変更します。
リモートにプッシュされた最後のコミットを修正
これは別の一般的なケースであり、独自のリポジトリを変更する必要があるだけでなく、ローカルブランチよりもはるかに進んでいる可能性があるリモートリポジトリも変更する必要があるため、修正が少し難しくなります。
最初のステップは、前のセクションで行ったように、最後のコミットを修正することです。
$ git commit --amend -m "Added a new file"
次に、これらの変更をリモートリポジトリにプッシュする必要があります。 ただし、これはを使用して行う必要があります --force
フラグ。
$ git push <remote> <branch> --force
リモートリポジトリを独自のローカル状態で上書きするには、この方法で行う必要があります。
プッシュを強制することで、あなたも 失う ローカルブランチにまだ持っていないローカルブランチでのコミット。 注意して進んでください!
ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!
間違いをすぐに見つけることができれば、変更を加えることは問題になりません。 それ以外の場合は、変更したいコミットメッセージの後に行われた変更が失われないように、別の解決策を見つける必要があります。
InteractiveRebaseを使用する
説明した前のソリューションよりも柔軟な別のオプションは、インタラクティブなリベースを使用することです。 これを行うと、最後のN個のコミットを検査し、ピッキング、スカッシュなどの変更を加えることができます。
リベースを開始するには、次のコマンドを使用できます。
$ git rebase -i HEAD~n
ここでは、 n
検査および編集するコミットの数です。 次に、次のようなコミットのリストが表示されます。
$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file
ご覧のとおり、最後のN個のコミットがすべて一覧表示されており、必要に応じてメッセージを変更できます。