TB-LAB BLOG

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

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

はじめに

こんばんは!!相変わらずのpruneです.急遽振られたので慌てて書いてます!
3年生は全員gitの設定などが終了しました(おそらく全員)
なのでgitについて書いてみようかなーと思います.
1回目は少し急いでるので軽くみてもらうと助かります!
なんかミスってたら修正入れてくのでよろしくね☆★


Gitってなーに

Gitとは?

Gitを簡単にいってしまえば「分散型バージョン管理システム」です!
ちなみに分散型という限り,分散型じゃないものもあります.例えばSubversionとか.時間ないので簡単に比較してみましょう.

全体像の比較

Subversionの全体像

f:id:tb-lab:20131222223928p:plain

この図から分かるようにSubversionではcommit = リポジトリに反映という意味です.
そしてupdate = ローカルの更新ということになります.つまりcommitが全てであり重要なのです.そしてcommitしたら取り消せません
他にも問題点はありますが細かいことは置いておいて,ここでは省略.

Gitの全体像

f:id:tb-lab:20131222224900p:plain

どうですか?かなりSubversionとは違いがあります.
気づきましたか?Subversionではcommitするとリモートリポジトリが更新されていました.しかしGitではpushというものができています.
つまりGitではcommit = ローカルリポジトリの反映であり,push = リモートリポジトリの反映なのです
そしてさりげなく図に書かれているfetchさん・・・fetch = リモートリポジトリから更新を取得することです.

あれ?pullは?

もう一度説明します.fetchはリモートリポジトリから最新情報をローカルリポジトリに持ってくるコマンドです.
もうわかりましたね?fetchしてもpullのようにファイルが更新されたりはしません.ローカルリポジトリが更新されるだけですから.
(詳しく言うと,masterでブランチを使っている場合origin/masterが更新されるらしい)

git marge

マージとは?

margeは複数あった変更点の流れを合流させるものです. 今日は時間ないのでカット!

じゃぁ結局pull と fetchの違いは?

% git pull

このコマンドは fetch + merge origin/master を一気にやってくれるコマンドです.つまりmarge/rebase = リモートリポジトリの更新をローカルに反映することです.
margeして初めてローカルファイルに反映されるのですねー.

ちなみにリモートリポジトリってわかるの?

Gitを使う場合,最初にやるコマンドがありますよね?あいつです.
そしてその後にちゃんとフォルダをみて見ましょう.

% git init
% ls -la

.gitさんがいましたね?こいつがいろいろ管理しています.

じゃぁGitの内部構造をみてみたいです!

はい!もう少し時間があれば説明できるのですが,時間ないので次の機会で会いましょう!
(これ書いてて自分も知らないことちょくちょくあるからかなり勉強になるので,そのうち更新します.)

おわりに

クリスマスまで?あと? 3日! クリスマスなんて無ければいいのに