【Sourcetree】コミットを取り消しする方法

Sourcetree
記事内に商品プロモーションを含む場合があります。

SourceTreeで間違った内容をコミットしちゃった…。どうやって取り消しするんだろう?

変な操作してファイルの中身が消えちゃったりしないか不安だな。

SourceTreeを使ってバージョン管理をしていると、たまに「コミットを取り消したい」という場面に遭遇します。

しかし、SouceTreeの操作に慣れていないうちは「あれ?どうやって取り消すんだっけ?」と疑問に思ったり、ファイルに悪影響を与えないか不安に感じる方もいると思います。

そこで今回は、SourceTreeで「コミットを取り消す方法」を解説します。

スポンサーリンク

SouceTreeでコミットを取り消しする方法

SourceTreeでコミットを取り消す方法ですが、操作自体はめちゃ簡単で、次の3ステップで完了します。

※あとで注意点があるので、まだやらないでくださいね。

  1. 戻りたいコミットを選択
  2. 右クリック
  3. 「現在のブランチをこのコミットまでリセット」をクリック

たとえば、下の「タイトルを赤文字に変更」のコミットを取り消すとしましょう。

この場合は、1つ前のコミットを選択右クリック現在のブランチをこのコミットまでリセットの順に進めればOK。

ここまでは、とても簡単な操作です。

しかし、重要なのはここからです。

「現在のブランチをこのコミットまでリセット」をクリックすると、下のポップアップが表示されます。

「使うモード」の矢印を押してみると、何やら「Soft」「Mixed」「Hard」の3つがあり、その中から1つ選ぶ必要があるようです。

GitやSouceTreeに慣れていない人だと、この時点で「何これ?意味わからん・・・」と不安で手が止まるかもしれませんね(僕はそうでした笑)。

実は、コミットの取り消しには次の3種類があって、目的に応じて使い分けが必要です。

  • Soft
  • Mixed
  • Hard

それぞれ解説します。

Soft:コミット操作だけ取り消す

Softは、コミット操作だけを取り消すモードです。

下記のコミット履歴で解説します。

たとえば、「タイトルを赤文字に変更」のコミット操作だけを取り消したいとしましょう。

1つ前のコミットを選択右クリック現在のブランチをこのコミットまでリセット」の順で進み、Soft(ローカルの変更を全てそのままにする)を選択してOKボタンを押します。

すると、「タイトルの赤文字を変更」のコミットが消え、「コミットされていない変更があります」に変わりました。

ファイルステータスを確認すると、該当のファイル(style.css)が「Indexにステージしたファイル」にいることがわかります。

また、作業ファイル自体は何の影響も受けていません。

あくまでコミット操作が取り消されただけで、タイトルへの赤色の指定はちゃんと残っていますし、画面上でも赤色が反映されたままです。

このように、Softは単純にコミット操作を取り消すだけのモードです。

Mixed:コミットとステージングを取り消す

Mixedは、コミット操作だけでなく、ステージングも一緒に取り消すモードです。

先ほどと同じ例を使って、今度は「Mixed(作業コピーの変更はそのままにするが、インデックスの状態をリセットする)」を選択してみましょう。

今度は「作業ツリーのファイル」に入りました。

つまり、コミットだけでなくステージングも取り消されたということです。

Soft同様、ファイル自体に変化はありません。

このように、Mixedモードでコミットを取り消すと、ファイル内容はそのままにコミット操作とステージングの両方を取り消しできます。

Hard:コミットもステージングも作業内容もすべて取り消す

コミットもステージングもファイルで行った作業内容もすべて取り消したい。正しくそんなハードな要望に応えてくれるのが、Hardモードです。

何といっても注意点は「コミットだけでなく作業内容も全部消えてしまう」という点です。例えば、仮に数百行のコードを書いていたら、それら全部が消滅します。

なので、「Hard(全ての作業コピーの変更を破棄する)」を選択すると、SouceTreeから「危険な作業しようとしてるけど、大丈夫?」と聞かれます(警告:破壊的な操作)。

それでも良ければ「はい」を押します。

すると、コミット履歴から「タイトルの赤文字を変更」がまるまる消えてしまいました。

ファイルを確認すると、赤文字のCSSが消えています。

当然、タイトルの文字色もデフォルトの黒に戻ってしまいました。

このように、Hardはコミット・ステージング・作業内容すべてを取り消してしまう、強力なモードです。

万が一全部消えても元に戻す手段はありますが、とはいえ操作は慎重に行いましょう。

スポンサーリンク

まとめ

今回はSourceTreeでコミットを取り消す方法を解説しました。

操作自体はそれほど難しくありませんが、3つのモードの意味をきちんと知った上で使わないと、トラブルの原因になります。この機会にぜひ押さえておきましょう。