Thursday, September 16, 2021

【Git】まちがって本番ブランチにプッシュしてしまったお馬鹿さんへ【悲劇】

基本ないんですが、masterやdevelopブランチに、自分の今のfeatureブランチだと思ってプッシュするお馬鹿さんがいますね。はい、過去の私です。

今はもうないですがそれでも feature/staging-branch みたいなこれから developにマージするための「みんなのブランチ」にプッシュしてしまったら・・・・・!

脂汗がでて・・・心臓がバクバク・・・過呼吸に・・・


なんてことになるまえに、こういう状況のときどうやったら助かるか、ということについて考えましょう。

gitは、よほど意図的にやらない限りブロックチェーンとおなじでスタティックなので、(リベースとかは除く)、特にgit初心者が悲惨な事態になることはないと思います。

が、もし git logのマスターブランチ がこんなふうになっていて、


c012a345 @haskell 取引所のソースをいけてるかんじにした

db102349 @hiromi ハートマークをつけた

aff211234 @natasha 共産主義の日常をメモった


あなたが

ddff21112 @bakayaro ポエムを追加

c012a345 @haskell 取引所のソースをいけてるかんじにした

db102349 @hiromi ハートマークをつけた

aff211234 @natasha 共産主義の日常をメモった


こんなふうにクソコミットをメインブランチにつけて、それを間違ってリモートにプッシュしてしまったとしましょう。

さてどうするか?


ただでさえ自分の痛いポエムを人にみられるのは公開処刑なみの苦痛ではありますが、これ、みんなのブランチなのであなたは今完全に戦犯です。


ブラック企業だと会議室で詰められることでしょう・・・・


どうするか?

もちろん、この一番最後のコミットを消します。

「消したよ」ということを明確にしたい(足跡を残してもいい)場合は git revert を使いますが、まあふつう汚したくないと思うんで、


git reset --hard [戻したいコミットの番号(はっしゅ)]


という操作をします。

今回だと、


git reset --hard c012a345


これにより、


c012a345 @haskell 取引所のソースをいけてるかんじにした


これが一番先頭にきます。


あとは、


git push -f origin HEAD

みたいにして強制でリモートの履歴を書き換えて仕舞えば、一件落着!


まあでも、みんなのリポジトリにプッシュしないよう、気をつけましょう!!!


--------------------------------------------------------------------------------------------------------------

twitter: @suganomanga


漫画「日本パワハラ図鑑」、絶賛連載中💕

https://seiga.nicovideo.jp/comic/53126

No comments:

Post a Comment