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連休明けから使いそうな予感が…。
と言ったところで本日はここまで。