最近2回ほどやる必要が出てきたのでメモ。

クライアントのGITに接続して仕事をしていて、修正を反映してコミット&プッシュしたら
お客さんから「今のコミット取り消してください!」って言われた時。

ひー!GITってどんな修正ものこっちゃってコミットをもとにもどしてもその形跡が残っちゃうじゃんよー!どうしたらいいだよ!とパニックなるよね。

全部消してコミット履歴からも消す方法がある。
git resetというやつ。

ソースツリーで言うと「このコミットまでmasterを元に戻す」というやつ。(2019年4月時点)

ちょっと手順がいくつかあるので説明するよ。

まずSourcetreeをひらいて、操作したいリポジトリのウィンドウをひらく。

20190416_1

コミット履歴一覧の中の上ふたつをけして3つめのところが最新状態になるようにしたい。
完全に上2つはなかったことにしたい。



①ここまで戻したいというコミットを右クリックして「このコミットまでmasterを元に戻す」をクリック

上の図でいうと上から3番目を最新状態にしたいので、3番目の矢印ついてるところを右クリックして「このコミットまでmasterを元に戻す」をクリック
(これがgit resetというやつ)
スクリーンショット 2019-04-16 10.22.38



②モードはHardにしちゃう(完全に消す)そしてOKをクリック

なんか聞いてくるので、モードをHardにしてOKを押す。
※Hardにすると修正作業も全部もとに戻るので作業を残しておきたいときはいったん別のフォルダに該当ファイルを逃しておくなどしてね。


20190416_3


するといったんそこまで最新コミットは戻るものの、まだなんか履歴上には自分がプッシュしたコミットが残ってる状態になる。

この時点では、まだプルするとやっぱり自分がやった作業が最新になっちゃう。

まだ道半ば



③環境設定で「強制プッシュを許可する」にチェックをいれる


Sourcetreeの環境設定をひらいて、
全般>高度な設定 をクリックすると出てくる、

「強制プッシュを許可する」というやつにチェックをいれる


スクリーンショット 2019-04-16 10.29.02

※リポジトリの設定じゃなくて、ソースツリーそのものの環境設定だよ。



④勇気を出して強制プッシュをやる!


3までの時点では、プッシュボタンに数字もついていない状態だけど、プッシュを果敢に押す。
するといつものプッシュ確認ウィンドウが出てくるんだけど、そのウィンドウで、「強制プッシュ」にチェックをいれてからOKをおす

20190416_5

なんか怖そうな言葉だけどここまできたら、勇気、、勇気を出すしかない・・・!





完了!!!!


ああらためてコミット履歴をみてみて、自分がやったコミットが消えていて、修正作業をやりはじめた段階まで戻っていれば成功!


ふぅやれやれ