TB-LAB BLOG

坪川研究室ブログです!適当に更新します!

そろそろGitを理解して使ってみないか?- 2 -

どうも!pruneです!
年末に書いていた記事です!笑
あけましておめでとう!今年もよろしく!
今回も Git について理解して行きたいと思いまーす.

第2回をはじめる前に・・・

前回の記事は簡単に全体像を見てみました.
まだ読んでない人は是非読んでほしいけども!その前に・・・
僕が勝手に尊敬する大先輩がちょうど Git についてブログに書かれてました.
Git バシバシ使ってる方が書かれてるので是非読んでほしいです.前回ふれた fetch についても書かれているので,こちらを読んだ方がきっと勉強になります.
ので勝手に紹介させていただきます.←


Git の内部構造を見てみないか?

Git で重要とされるデータ領域があります.
どのあるのかと言うと3つです.これは理解する上で避けては通れない道です><
それらの名前はワークツリー(作業ディレクトリ)ステージング・エリア(インデックス)Git リポジトリです.
ではローカル環境の内部構造をみて見ましょう.

ローカル環境の内部構造ってどうなってるの?

前回の図をすこしおもいだしてください.

この図のロカールリポジトリ以下がローカル環境です.

test
 |-- HelloWorld.java
 |-- parent
 |     |-- child1.java
 |     |-- child2.java
 |-- .git
       |-- index
       |-- config
       |-- HEAD
       |-- objects
       |     |-- ・・・

例えば物理構造がこうなっていたとしましょう.
.git フォルダは前回お話した通り

% git init

した時に作成されるものでした.この .git が Git リポジトリです.これは Git が管理するディレクトリです.
ユーザは実際それ以外のところで作業をしますよね?つまり,.git 以外のところがワークツリーです.
.git の中を見ていただけると分かるのですが index というファイルがあります.そう,もうおわかりですね?これがステージング・エリアです.
これで最初に紹介した3つがそろいました.つまり Git の論理構造はこの3つから構成されているわけです.

Git の Command で行われること

領域の準備

ワークツリーはプロジェクト全体みないなものです.一番上のフォルダーですね.そこに下記のコマンドを.

% git init

これでステージング・エリアと Git リポジトリの為の領域が準備されます.

git add <filepattern>

add コマンドは Git を使ったことのある人は絶対に打ったことのあるコマンドだと思います.

% git add HelloWorld.java

これをすることによって,追加したい対象物をリポジトリに指定することができます.
つまり,イメージ的には,ワークツリーにあったものがステージ・エリアにステージされるということです.ここでのステージの意味はおそらくset the stage for commitの意味でのstageの気がします←たぶん・・・俺はそう理解し(ry
つまりcommitの準備みたいなものです.だってまだcommitしたくないものだってきっとあるはずです.

ちなみに,ディレクトリの一部だけ add したとしましょう.このときのワークツリーでのツリー構造とステージング・エリアでのツリー構造は別なものです.
ワークツリーからステージング・エリアに add によって物理的に移動しているわけではありません.

git commit -m <msg>

% git commit -m "revise"

こんな感じに add した後に commit をすると思います.
これは更新内容をリポジトリに登録してくれるコマンドです.
commit するとステージングエリアでステージされている更新内容を要録します.
その際に commit ID を Git リポジトリ側で発行してくれます.そのIDとファイルが関連づけられて管理されます.

この後に

% git add .

などをしたとします.
この「.」はまだステージングエリアに登録されていない未登録のファイル全てがステージされます.
これをさらに commit した場合,さらに Git リポジトリ側でIDが発行されます.この新たに発行されたIDは一つ前に発行されたIDと関連づけられます.この動作によって前の commit が親となり,新たに発行されたIDは子となります.
この構造のおかげで更新内容が管理できるのです.

まとめ

今日はこの基本的なコマンドまでの使用で終わりたいと思います.
つぎは reset や checkout について書きたいと思います.
にしてもうちの大学は卒論提出一週間前です.わりとみんな切羽詰まっていますwww
進捗どうですか?
ちなみに僕はダメです.次の更新はいつになるだろう・・・笑
無事に提出できたらまた更新したいと思います.それではー


pruneコラム①

gitを使うようになって少し気になったことがあります.
ある人は「ギット」,ある人は「ジット」と読みます.
これはどちらが正しいのでしょうか?それとも両方正しいのでしょうか?それともネイティブは「ジット」で和製英語となったものが「ギット」なのでしょうか?

ということで調べました. Linus Torvalds氏が git について講演してました. ご存知の通りLinus Torvalds氏は git の生みの親です. その動画を見る限り発音は「ギット」でした.
どうやら「ジット」とは読まないようです.

ちなみに git の意味は,「ばか,間抜け,くそったれ」 とかという意味があります.
名前の由来について本人は

I'm an egotistical bastard, so I name all my projects after myself. First Linux, now git.

と言っているみたいですねww