gitメモ

## git初期設定
'''bash
git config --global user.name 'qnzm'
git config --global user.email 'qnzm@gmail.com'
git config --global color.ui auto
git config --global core.editor vim
'''

## ブランチ
### ローカルブランチ
git branch であらわれるブランチ。
/refs/heads/

### リモート追跡ブランチ(remote tracking branch)
他のリポジトリで歴史が作られる家庭を追跡することのみが目的のブランチ。
コミットすることができない。
/refs/remotes/

すべてのブランチは、 git branch -a で確認できる。
''' bash
% git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
'''

''' bash
% ls -alR .git
.git/refs/heads:
total 8
drwxr-xr-x  3 userm  staff  102  5  5 13:10 .
drwxr-xr-x  5 userm  staff  170  5  5 13:09 ..
-rw-r--r--  1 userm  staff   41  5  5 13:10 master
〜
.git/refs/remotes/origin:
total 16
drwxr-xr-x  4 userm  staff  136  5  5 13:10 .
drwxr-xr-x  3 userm  staff  102  5  5 13:09 ..
-rw-r--r--  1 userm  staff   32  5  5 13:09 HEAD
-rw-r--r--  1 userm  staff   41  5  5 13:10 master

% cat .git/refs/heads/master         
942e60094606c59b90a21e26cd087830180e83c0

% cat .git/refs/remotes/origin/HEAD 
ref: refs/remotes/origin/master

% cat .git/refs/remotes/origin/master
942e60094606c59b90a21e26cd087830180e83c0
'''

### git pull
1. git fetch にて、リモート追跡ブランチを更新
2. git merge にて、指定されたリポジトリのブランチをマージ

### .git/config
cloneしてきたら、configには以下の記述が。

[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = /Users/userm/sketch/app.git
[branch "master"]
	remote = origin
	merge = refs/heads/master

### git fetch
fetchの部分は、コマンドパラメータ。
一番長い記述だと、

git fetch /Users/userm/sketch/app.git '+refs/heads/*:refs/remotes/origin/*'
第一引数はそのままでも省略できる。
第二引数がリモートブランチの更新を表す。
この第に引数が、configには定義されている。

#### 引数左辺
+refs/heads/*
当該リポジトリから、このパターンにマッチするリファレンスを取ってこい
→ リポジトリのローカルブランチすべて取ってこい

#### 引数右辺
refs/remotes/origin/*
とってきたリファンレンスを、手元のこの階層にしまえ 
→ /refs/remotes/origin/master にコピーする。