業務でいつも通り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 前にちゃんと確認しなさい。
ウッ、すみません……。