1. ホーム
  2. git

[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?

2022-03-17 11:47:18

質問

コミットメッセージに間違ったことを書いてしまいました。

どうすればメッセージを変更できますか?コミットはまだプッシュされていません。

解決方法を教えてください。

直近のコミットメッセージの修正

git commit --amend

を実行するとエディタが開き、直近のコミットのコミットメッセージを変更できるようになります。さらに、コマンドラインから直接コミットメッセージを設定することもできます。

git commit --amend -m "New commit message"

...ただし、この場合、複数行のコミットメッセージや小さな修正の入力が面倒になります。

作業コピーの変更がないことを確認する 段階的 を実行すると、それらもコミットされてしまいます。( アンステージ の変更はコミットされません)。

すでにリモートブランチにプッシュしたコミットのメッセージを変更する

すでにリモートブランチにコミットをプッシュしている場合は、ローカルでコミットを修正した後で (上記のように)、次のようにします。 コミットを強制プッシュする必要があります。 を使っています。

git push <remote> <branch> --force
# Or
git push <remote> <branch> -f

警告: フォースプッシュすると、リモートブランチはローカルのブランチの状態で上書きされます。 . 自分のローカルブランチにないコミットがリモートブランチにある場合は 意志 はそれらのコミットを失います。

警告: すでに他の人と共有しているコミットを修正するのは慎重にしてください。 コミットの修正は基本的に リライト を持つようにすることで、異なる シャー これは、あなたが書き直した古いコミットのコピーを他の人が持っている場合に問題となります。古いコミットのコピーを持っている人は、新しく書き直したコミットと自分の作業を同期させる必要があり、それが困難な場合もあります。


対話型リベースの実行

もう一つの方法は、対話型リベースを使用することです。 これにより、最新のメッセージでなくても、更新したいメッセージを編集することができます。

Gitスクワッシュを行うには、次のような手順で行います。

// n is the number of commits up to the last commit you want to be able to edit
git rebase -i HEAD~n

コミットをつぶすと、次のようになります。 e/r をクリックすると、メッセージの編集ができます。

対話型リベースに関する重要な注意事項

を使用する場合 git rebase -i HEAD~n がある場合があります。 より n回以上のコミット Git は直近の n コミットをすべて "collect" し、その範囲のどこかでマージがあった場合はそのすべてのコミットも表示するので、結果は n + .となります。

良いヒントです。

もし、1つ以上のブランチに対してこの作業を行う必要があり、コンテンツを修正する際にコンフリクトが発生する可能性がある場合、以下のように設定します。 git rerere を実行し、Git にそれらのコンフリクトを自動的に解決させます。


ドキュメンテーション