開発
【SourceTree中級者向け】 コミット/プッシュ先の間違いを戻す操作まとめ
ishii
以前当ブログで書いた「【SourceTree初心者向け】 更新作業の操作まとめ」が多くの方に観覧頂きましたので、今回はそのSourceTreeの操作第2回です。
SourceTreeに慣れてきた次の段階として知っておくべきことは、操作を間違えたときの対処方法です。
特に多くの方が躓くポイントは、ブランチのコミット、プッシュ先の間違えた時どう戻せば良いかについて。
実際にSourceTreeの操作を覚えてきた方からこの質問を受けることが多く、必ずと言っていいほど躓くポイントだと思います。
以前は「初心者向け」でしたが、今回はそんな慣れてきた方の「中級向け」として、間違えた時に自分で対処できるよう操作をまとめました。
[作業環境:Mac/SourceTreeバージョン:3.1.2 ※Windowsとは画面が異なる場合がございます。]
目次
・まずSourceTreeがどの状態か確認
・コミットした状態からファイルを変更した直前まで戻す
(A)記録に残す方法
(B)記録に残さない方法
・プッシュした状態からファイルを変更した直前まで戻す
(A)記録に残す方法
(B)記録に残さない方法
まずSourceTreeがどの状態か確認
まず、SourceTreeがどの状態にあるか現状を確認しましょう。
1)ブランチを切った状態
画面の例では、developからtest-002のブランチを切っています。
するとdevelopと横並びにtest-002が表示されます。

2)コミットした状態
左上のコミットボタンを押し、test-002にコミットすると、(1)でdevelopと横並びだったtest-002が1段上に上がります。

3)プッシュした状態
test-002にプッシュすると、test-002と並んでorigin/test-002が表示されます。

自分の画面と見比べてみてください。今、どこまでの操作をしたかが分かりましたか?
(1)の場合はまだコミットもプッシュも行っていない状態なので、特に戻す必要はございません。
(2)(3)の状態だった方は(1)まで戻す必要がありますので、次にその手順について説明します。
※以下の操作をする場合は、必ずファイルのバックアップをとるようにしましょう。
・(2)のコミットした状態からコミットする前まで戻す
主に2つの方法があります。
違いとしては(A)SourceTree上に戻す作業をしたことが記録される、(B)戻す作業自体したことが記録されない、という点です。
(A)記録に残す方法
・間違えてコミットしたtest-002上で右クリック>「コミット適用前に戻す」を選択。
・すると、下画像のようにRevertという文字が表示されファイルがコミット前に戻る。
・そこから正しい操作(正しいブランチを作成して再度コミットするなど)をする。

(B)記録に残さない方法
・コミットした状態から、コミット前(今回で言うとdevelop)のブランチ上で右クリック。
・「このコミットまで戻す」を選択。

・モードが選択できるので、「Soft」を選択。

・コミット前の状態に戻ります。

・(3)のプッシュした状態からコミットする前まで戻す
こちらも主に2つの方法があります。
先程と同じく、違いとしては(A)SourceTree上に戻す作業をしたことが記録される、(B)戻す作業自体したことが記録されない、という点です。
(A)記録に残す方法
・間違えてプッシュしたtest-002上で右クリック>「コミット適用前に戻す」 を選択。

・先程のコミットを戻した時と違い、「1コミット先行」と出る。
※これはコミットとプッシュを行ったものが”コミットだけ元に戻っていて、その情報がプッシュされていない”状態になります。
ファイルの変更情報の、コミット=test-002がプッシュ=origin/test-002より先行している状態。

・「1コミット先行」の表示を消すにはtest-002をプッシュすればOK。
test-002とorigin/test-002が横並びの状態になり、ファイルはコミットする前の状態に戻ります。

(B)記録に残さない方法
※上級の操作ですので、SourceTreeをまだ理解しきれていないという方はテスト用の環境を作って試す事をおすすめします。
※SourceTreeのバージョンによっては下で説明する「強制プッシュ」のチェックができない場合があります。
・SourceTree自体の環境設定を開く。
・右上の「高度な設定」を選択し、「強制プッシュを許可する」にチェックを入れる。

・戻したい内容(今回で言うとdevelopの状態)のブランチ上で右クリック。
・「test-002をこのコミットまで戻す」を選択。

・モードはSoftを選択。

・「1コミット遅れ」と出る。
※これはプッシュした内容と比べて”コミットだけ元に戻っていている”状態になります。

・プッシュボタンを押す。
・プッシュするブランチを確認し、強制プッシュにチェック。

・強制プッシュに対する警告が出てくるがOKを押す。

・ファイルが戻っていることを確認。
最後に
今回はブランチのコミット、プッシュの間違いを戻す手順についてご紹介しました。
調べると、コマンドを打って対処する方法の記事は多くみられますが、SourceTreeの画面の操作は少なかったため今後説明し易くするためにもまとめました。
まだ慣れていない方は、練習用のポジトリを作ってファイルがどのような動きになるかテストし、理解することからはじめましょう。