基本ないんですが、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
漫画「日本パワハラ図鑑」、絶賛連載中💕
No comments:
Post a Comment