【物語で学ぶ】 Pushしてしまったコミットコメントを修正する方法

Git

業務でいつも通りPushしました。

プルリクを送るタイミングあることに気付く。

サバ缶
サバ缶

コミットコメント、間違えとるやん……。

そんな時の対処方法についてご紹介します。

一般的な方法

調べてみると出てくるのですが、以下のような手順が一般的です。

  • amendオプションをつけて、前コミットの修正を行う。
  • fオプションをつけて、強制的にプッシュする!

ちょっとこれはアカンな、と思い先輩に相談した方法です。

前提条件

以下の条件を満たしている時に使える方法です。

  • 個人で作業しているブランチであること
  • その他のブランチに影響がないこと
  • そのブランチをPushしたタイミングが、ブランチ生成のタイミングであること
サバ缶
サバ缶

masterなんて言語道断!
エンジニア人生、詰みます。(たぶん)

ストーリーの設定

ほぼ私の失敗時と同じなのですが、以下のような状況です。

「dev-202006」という、6月リリース用ブランチがあります。
そして私(あなた)は、「work-0514」ブランチをマージするため、プルリクエストを送ろうとしています。

が、明らかにコメントをミスってますね〜。

サバ缶
サバ缶

アバ……?
…てか、もうPushしちゃってるし!ヤベー!

……という状況です。(アバは例です)

Push後のコメントの修正方法

amendオプションをつけて、コメントを修正

現在チェックアウトしているブランチが、修正したいブランチであることを確認しましょう。

git commit --amend

すると、エディタが開くので、そこでコメントを修正します。

work-0514 [add] アババババばばば
↓
work-0514 [add] テキストの追加

更新すると、以下のような文言が出てきます。

[work-0514 a1f7418] work-0514 [add] テキストの追加
Date: Thu May 14 22:00:23 2020 +0900
1 file changed, 1 insertion(+)
create mode 100644 memo.md

履歴を見に行くと、このように変化しています。

ローカルと、リモートで、コミットコメントの差分があるためです。

ブランチ元にHEADを移動

ローカルと、リモートで差分が起きているので、一旦ブランチ元に居場所を変えましょう。
プルしちゃうと、勝手にマージされた状態になってしまいます。

「dev-202006」ブランチをダブルクリックしてチェックアウトします。

少し分かりにつくいですが、『Initial commit』が太字になっています。
この状態が現在のブランチを意味します。

amendしたローカルブランチ名を変更する

ローカルのブランチ名を変更します。分身を作るイメージです。

今回は「work-0514_2」とします。

一時的なものなので、ブランチ名は何でもOKです。

リモートブランチを削除する

この作業は本当に注意して行ってください。
共有ブランチを削除しないように本当に注意してください。

プロジェクトによってはリモートブランチの削除を固く禁じている場合もあります。
不安な場合は、プロジェクトリーダーやマネージャーに確認しておきましょう。

GitHubの画面からも削除の操作が可能です。
※もちろんGitコマンドからも可能です。

赤いゴミ箱のボタンを押すだけで完了です。

GitHubでの削除操作は、確認もなく削除してしまうので、慎重に行なってください。

SourceTreeの履歴上ではすぐに消えないという場合があります。
その際は、SourceTreeを起動し直せば表示されなくなる(削除される)ので大丈夫です。

ブランチを新規作成し、チェリーピックする

では、コメントを修正した分身「work-0514_2」を、正式な「work-0514」としてPushしましょう。

新たにブランチを作成します。

間違えてしまった「work-0514」ブランチですね。

作成できたら、修正後の「work-0514_2」ブランチをチェリーピックします。

すると、「work-0514_2」の修正内容が、「work-0514」に反映されます。
※チェリーピック完了後、自動的にコミットされます。

Pushし直す!

最後に、Pushします。
リモートには間違えてしまった「work-0514」はありませんから、正しいコメントのブランチがPushされますね。

一件落着!

まとめ

そもそも Push 前にちゃんと確認しなさい。

サバ缶
サバ缶

ウッ、すみません……。

タイトルとURLをコピーしました