gitのワーキングツリーがようやく理解できた話

2021年4月5日

テクノロジー

podcastでgitの講習を行って、gitに詳しくなってきた、弓削田です。 自分の配信しているpodcastで、プログラム言語学習や、それに付随する技術学習を、 毎日10分程度のラジオ放送(podcast)で聴くだけで、学習できてしまうという活動を初めてはや1年。 配信登録者数もまあまあ伸びてきて、5つ星評価もお褒めのコメントもいただき、 非常に有意義に感じているんですが、 実はこの番組で、一番勉強になっているのは、僕自身という事を告白したいと思います。 今現在は、「gitの学習」を収録しているんですが、commitやpush程度の基本操作しかできていなかったんですが、 ラジオで講義するために、resetを深く学習してみました。 その時に、HEADの概念や、--soft,--hardといった、オプションの意味がこれまで全く理解できていなかったんですが、 これがようやく理解できたので、音声のみのラジオとは別に、ブログでも記述しておきたいと思います。

HEAD , INDEX , WorkingTreeについて

まずはじめに、gitの仕組みについて次の3つを覚えなければいけません。

HEAD

git logを実行すると、HEADという文字が出てくるので、なんとなく、コミットの先頭のものというのはわかりますが、 その詳細ってなんなの?と思っていたんですが、これって、リポジトリのファイルを修正した最新情報という意味でした。

INDEX

次にインデックスというのは、addをした最新の状態の事です。 「ステージングエリア」と言う風にも言われるようです。

WorkingTree

ワーキングツリーと言われるコレは、他の解説サイトでは「作業ディレクトリ」とも表現されることもありますが、 コミットをした最新状態の事です。 これらの3つの段階が、gitでは、順番に進行していくという認識を持っていますが、単語の意味を知ってようやく、 構造も含めて理解することができました。 1) ファイル修正 -> 2) add操作 -> 3) commit操作 自分で開発作業をしている時に、この手順をすべて含めて「コミット」という風に言っていたんですが、 単語が理解できると、いろいろな操作が理解して行える感覚ができました。

--soft , --mixed , --hardについて

そして、reset操作をする時の、これら3つのオプションは、次のように考えます。

--soft

HEADの取り消し ※前回コミットした状態か、addをしている状態の場合は、その状態に戻す。

--mixed

HEADとINDEXの取り消し ※addした状態も含めて、前回のコミット状態まで戻す。

--hard

HEADとINDEXとWorkingTreeの取り消し ※指定のcommitした直後の状態に戻す

Podcastの紹介

こんな事を、毎日10分程度聴くだけで学習できる、学習系PODCAST「ナンチャッテ・ラジオ」は、次のサイトから聴くことができます。 http://mynt.work/radio/

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。