
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/
0 件のコメント:
コメントを投稿