SourceTreeでgit resetを使いこなそう!
さて、本日は Git について書きます。
皆さんは、GitでリモートにPushした内容を取り消したくなることがありませんでしょうか?
そんなときに利用するのがgit resetコマンドです。
リモートにPushした内容ということは自分だけの範疇では収まらないため、他の人に影響が出るかもしれません。
それって考えてみると非常に怖いですよね…。
しかし、どうしてもリモートの内容を修正したいことが出てきます。
今回はそんな不安を跳ね飛ばすべく実際に練習してみました。
git reset
今回扱うGitのRepositoryはこちらです。

では実際にgit resetを実行してみましょう。
git reset —soft
まずはgit reset --softを実行してみます。
SourceTreeでは下記の手順で実行します。
1.元に戻したいポイントで右クリック
2.「このコミットまでmasterを元に戻す」を選択
3.モードで Soft を選択する

これでローカル上でコミット前のmasterに戻せます。
masterに反映した分を別ブランチに持って行きたい場合は別ブランチを切って、そちらにコミットすれば良いです。

続いて、リモートのmasterからプッシュ分を取り除くためには、ローカルのmasterの状態をプッシュしなくてはなりません。
SourceTreeでは強制プッシュはデフォルトでOFFになっているため、設定を変更する必要があります。

4.強制プッシュを実行する
これにより、Gitの状態は下図のようになります。

git reset —mixed
続いてgit reset --mixedを実行してみます。
1.元に戻したいポイントで右クリック
2.「このコミットまでmasterを元に戻す」を選択
3.モードで Mixed を選択する

これでローカル上でコミット前のmasterに戻せます。
softと異なるのは コミットだけでなくaddも取り除ける ということです。

もちろんsoftのときと同様に別ブランチに内容を反映させることができます。

4.強制プッシュを実行する
強制プッシュ実行後は下図のようになります。

git reset —hard
最後にgit reset --hardを実行してみます。
1.元に戻したいポイントで右クリック
2.「このコミットまでmasterを元に戻す」を選択
3.モードで Hard を選択する

これでローカル上でコミット前のmasterに戻せます。
softやmixedと異なり、作業内容が一切削除されます。

4.強制プッシュを実行する
強制プッシュ実行後は下図のようになります。

まとめ
さていかがでしたでしょうか?
通常はあまりやりたくない操作ではありますが、必要となるタイミングは必ずくるはずなので知っておいて損はないでしょう。
筆者も早速3連休明けから使いそうな予感が…。
と言ったところで本日はここまで。