簡単Git入門!ファイル変更時のSourceTreeの動きとコミットを利用したリセット操作


Git入門ロゴ04

ローカル&お一人様ではじめるSourceTreeによるGit入門。

連載3回めの前回では「指定したリポジトリ(ローカルファイル)の状態をSourceTreeに保存(コミット)する」までをご説明しました。

4回目の今回は、リポジトリ内のファイルを編集し、その状態がどのようにGitに記録されるか確認してみたいと思います。

また、コミットのログを利用して、コミットを前の段階までリセットしたり、SourceTreeからリポジトリ内のファイルまで操作してみます。

※作業内容が消えてしまうので、実際の業務ファイルでお試しはやめてください。

スポンサーリンク

前回の状態の確認

前回はリポジトリに指定したフォルダの初期状態をコミットしてGitに覚えてもらいました。

まだフォルダ内の「memo.txt」は白紙の状態です。

Gitの画面は、現状このようになっています。

★ファイルステータス画面

初期状態をコミット済み

★ログ画面

ログ画面

それではひきつづき作業をしていきます。

リポジトリ内のファイルを編集してみよう

リポジトリに指定したフォルダの中に入っている唯一のファイル「memo.txt」を編集してみましょう。

通常通り「Gitテスト」フォルダを開き、「memo.txt」ファイルをダブルクリックしてメモ帳などで開きます。なにかしらテキストを打ち込んで保存してください。

テキスト打ち込み

SourceTreeに戻り、「ファイルステータス」タブを確認すると、一瞬のタイムラグはありますが、「memo.txt」の変更がSourceTreeに読み込まれます。

memo.txtの変更がSourceTreeに反映

左側のエリアには、打ち込んだテキストの内容が表示されていますね。

この段階で再びコミットしてみましょう。

変更作業をコミットしよう

前回と同じ手順ですが、おさらいを兼ねてやってみます。

memoをステージングエリアに送る

「memo.txt」を選択し、「全てインデックスに追加」もしくは「選択をインデックスに追加」ボタンで、ステージングエリアに送ります。

その状態で、コミットのためのコメントを記入しましょう。記入内容は自由ですが、あとからどのような状態を記録しているのか、見て分かる内容にすることが大事でしたね。

コメントを記入してコミット

コミットしたら、ログのタブを開いてみましょう。
コミットされ、作業履歴が保存されているのがわかります。

コミットの確認

これで、変更作業をGitに保存することができました!

現在Gitには、「何も作業してない初期状態」のコミットと、「memo.txtに文章を追加した状態」のコミットが作成されています。

文章を追加してSourceTreeのコミットの範囲を確認

ここでもう少し詳しくSourceTreeの操作を見ていくために、さらにmemo.txtに手を加えてみます。もっと多くの文章を追加してみましょう。

ログ画面でファイルを選択し、ダブルクリックすると該当ファイルを開くことができます。

ダブルクリックで開く

memo.txtに文章を追加してみました。追加した文章には「ダミーテキストジェネレーター」の坊っちゃんを使用させていただきました。

坊っちゃんを追加

memo.txtを保存してから、SourceTreeのログ画面を見てみましょう。変更部分が反映されています。

memo.txtの変更が反映

もし変更内容が反映されていなかったら、SourceTree内のどこかをクリックすると新しい情報を読込んでくれます

SourceTreeにおけるファイルの更新の認識について

SourceTreeでは、リポジトリ(監視下にあるフォルダ)の中のファイルが保存されるとファイルが変更された!と認識してくれます。

保存前の編集作業段階は察知してくれません。つまり保存するまではコミットができません。

ファイル保存 → SourceTreeに反映 → コミットできる!

とおぼえてください。

また初心者な私は、リポジトリ設定さえすれば保存したごとにファイル履歴を自動で取っておいてくれるのかなーと期待していましたが、そんなこともありませんでした。

履歴はコミット操作した分しか残りません。

では、追加分を「坊っちゃんを追加」というコメントと共にコミットしておきましょう。

コミットをリセットしてみる

コミットに慣れたところで、コミットの履歴や、リポジトリ内のファイルをリセット(前の状態に戻す)という作業を行ってみたいと思います。

現在ログ画面では、このようにコミットが連なっています。

坊っちゃんまでのコミット

リセットしたい状態で保存しておいたコミットを選択

今回は一つ前の「最初のテキスト入力」状態まで、リセットしてみましょう。

まず戻したい状態のコミットを選択します。

コミットを選択

その状態で右クリックし、「現在のブランチをこのコミットまでリセット」を選択します。

右クリックでメニュー表示

ウィンドウが開き、Soft・Mixed・Hardの選択を迫られます。説明を見ても意味がさっぱりです。

Softモードを選択

Soft・Mixedはコミットだけを打ち消してくれる

Soft・Mixedを選択すると、コミットのログは「最初のテキスト入力」の状態まで戻ります。

コミットが戻った

画像をよく見ると、ログから「坊っちゃんを追加」のコミットが消えています。最新のコミット情報は、選択した「最初のテキスト入力」時点に戻っています。

が、ここで実際のファイルを見てみると、追加した坊っちゃんの文章自体はmemo.txtに残っています。

Soft・Mixedモードではコミットの記録だけが指定時点に戻り、リポジトリ内のファイル本体に影響はありません。

SoftモードとMixedモードの違い

コミットが指定時点に戻るだけのSoftモードとMixedモード。この2つの違いは、リセットしたコミット時点以降のファイル変更を、インデックスに追加した状態にするか否か、それだけです。

ややこしいですね、実際の画面を見て確認してみましょう。

Softモードの場合

softモード

「Soft - ローカルの変更を全てそのままにする」モードを選ぶと、ログ画面は次のようになります。

Softログ画面

ファイルステータス画面に切り替えると、インデックスにmemo.txtが追加されている状態です。

Softファイルステータス画面

Mixedモードの場合

「Mixed - 作業コピーの変更はそのままにするが、インデックスの状態はリセットする」モードを選ぶと、ログ画面はSoftモード時と同じになります。

Softログ画面

ファイルステータス画面では、Softモードと違いインデックスにはmemo.txtが追加されていません。

Mixedファイルステータス画面

このように、Soft・MixedモードではSourceTree(Git)のコミットの記録だけがリセットされます。

ファイルの状態までリセットしたいならHardモード

リポジトリの中まで綺麗さっぱり戻したいのよ!という衝動に駆られたときに使用するのが、Hardモードです。

Hardモードを選択

Hardモードを選択すると、破壊的なメッセージが表示されます。

破壊的なメッセージ

怯まずYesをクリックしてみました。

コミットがhardに戻った

Soft・Mixedモードでは残っていた「コミットされていない変更があります」が、ありません。

リポジトリ内のmemo.txt本体を確認してみましょう。

失った坊っちゃん

追加した坊っちゃんのテキスト部分が消えています。

コミット履歴及びリポジトリ内のファイルの中身まで、完全に「最初のテキスト入力」でコミットした時の保存状態に戻りました。

まとめ

今回は、リポジトリ内のファイルを編集した時のSourceTree側の動きチェックと、コミットをリセットしたり、ファイル本体も前の状態に戻す作業をやってみました。

ファイルは綺麗に戻せましたが、戻す前の作業(坊っちゃん部分)は永久に失われてしまいました。

このような単純な操作ではなく、「ファイルを一旦もとに戻しつつ、坊っちゃん部分も別で保存」しておけたら大変便利ですよね。

その為に、Git(SourceTree)ではブランチという機能があります。

次回はGitの目玉機能である、ブランチに触れてみようと思いますので、宜しくお願いします。

連載目次:ローカル&お一人様向けSourceTreeによるGit入門

ローカルかつお一人様でもとっても便利なバージョン管理ツール。本シリーズでは操作画面やインストール方法が新しくなったSourceTreeを使って、簡単にGitバージョン管理をする方法をお伝えしていきます。
  1. 簡単Git入門!SourceTreeではじめるローカルバージョン管理
  2. 簡単Git入門!SourceTreeでローカルファイルをリポジトリに指定する
  3. 簡単Git入門!はじめてのコミットでリポジトリ(フォルダ)の初期状態を保存しよう
  4. 簡単Git入門!ファイル変更時のSourceTreeの動きとコミットを利用したリセット操作

タイトルとURLをコピーしました