コミット間の移動
- コミットツリーの中を移動
- 移動すると「HEAD」が表示される
コミット間を移動します。
これまでにコミットを積み重ねましたので、そのコミットの間を自由に行き来して、その場その場で、そのコミットのタイミングに戻っていきたいと思います。では画面を共有します。
はい、これまでに5つのコミットを行いました。1、2、3、4、5ですね。そして現在は「test2.txt」が削除されている状態なので、このフォルダーの中には1つのファイルしかない状態、「test.txt」のファイルしかない状態、という形になっています。
で、一番最初の「Gitの基礎知識」の説明の中で「どのコミットにいつでも戻れる」ということをご紹介しました。
実際にその内容を、このSourceTreeの機能を使って実行していきたいと思います。やりたいことは、戻りたいので、このコミットのところを選んでダブルクリックをするという方法になります。
一番最初のコミットに戻る
例えばですね、まずは一番最初に戻りましょうか。
一番最初をダブルクリックします。すると「これからチェックアウトしてもいいですか?(作業コピーは)’detached HEAD ’ になりますよ」っていう風になります。とりあえずここでは OK として下さい。
はい、そうすると「HEAD」っていうタグが出来上がって、こちらに移動したのが分かります。master はここにあるけども(HEADは)ここですね。「HEAD」っていうのは「今、自分がいる場所」という風に思っていただければと思います。
「コミットとしては進んでるけども、今の自分自身は一番最初に戻ったよ」という状態です。この状態でフォルダを見ると、今この「testです。」というテキストだけが残っているのがわかります。こんな感じでですね「testです。」というふうに一番最初の状態に戻ってるのが分かります。分かりますか?
これまでに、この文言を追加したり、更にコピーしてそこから削除してっていうふうにしたので、ここには文字が増えていたはずなんですけども、一番最初のコミットまで戻ってますから、一番最初の状態にある、いうことですね。
3番目のコミットに戻る
では二つのファイルを追加したところに行ってみましょう。これ(下から3番目を)ダブルクリックします。で、また切り替えます。
切り替えると今度は、今ここでtest2.txtを追加した状態ですからフォルダの中身を見てみると、はい、このようにファイルが二つになっているということがわかります。すごくないですか?すごくないですか?分かります?
この「.git」によって管理されているリポジトリの中身では「コミット間を移動すると、その時の状態にまでフォルダーの中身が戻れる」ということになります。「すごいな…!」と思っていただいたらちょっと嬉しいんですけども、いかがでしょうか。
一番最後(最新)のコミットに戻る
はい、そして一番最後、一緒に戻りましょう。最後のコミットですね。直近のコミットに戻りましょう。またダブルクリックします。
今、何も聞かれませんでした。これは masterブランチと同じところに来たので、この「HEAD」が消えて「今マスターのとこまでいますよ」ってことで、元に戻った状態です。もし「HEAD」が出ていたとしてもあまり気にしていただかなくて結構です。とりあえず master と同じ場所にいれば問題はありません.
結果としてフォルダーの中身が「test.txt」だけになっていて、その中身についてはこの2行分ですね。「テキストの追加ですよ。」というのが出ている状態ということになります。はい、いかがでしょう?
このように Git は コミットの履歴をどんどんどんどん遡って見ることができますし、コミットしたとこまでであれば、すぐにまた元に戻せるという内容となります。
これがすごく強力なところの一つです。どこかで「この文言あったはずなのに消えてる」ってなった場合に「これ誰がいつ消したんだろう?」っていうのを想像で犯人探しするのはなかなか難しいですね。
でも、このファイルの履歴見ることができればその中身から、いつのタイミングで何の目的の時に、その該当箇所を誰が消してしまったのか、もしくは意図して消したのか、そういったことが思い出されますので「これ消したの誰だよ」っていうところから調べていたら「あ…、その目的で消したのか。しかもこの目的を指示したの私だった」みたいな事があるかもしれません。お互いにね、疑心暗鬼にならずに、明確な理由としてそのファイルの変更箇所がわかるということになりますので、とてもとてもお勧めです。
て、わけで、皆さん是非ですね、このSourceTreeの履歴の中身をダブルクリックして移動させつつ、フォルダーの中身が変化するな、履歴を遡ることができるな、ということを理解して作業を行ってみてください 。