Hatena::ブログ(Diary)

SYNjuku-ACKihabara このページをアンテナに追加 RSSフィード

2008-10-04

[]git勉強会に参加してきました

現在gitメンテナンスされているJunio C Hamanoさんによる勉強会でした。

まずはgitは「じっと」じゃなくて「ぎっと」だよってこと

gitには150個くらいコマンドがあるけど、実際には20個くらい知っていれば作業ができる。

ただgitの概念を知ることが大事。そのためには150個のコマンドにも触れる必要がある。

概念

blob

 各ファイルを表すハッシュ値

・Tree

 ファイルのまとまり(対応表)を表すハッシュ値

・commit record history

 誰がいつ保存したか

 バージョン

 修正理由などを保持する

・Repository

 commit record historyのまとまりに

 最新のものを表すポインタがついたもの

 変更の歴史

 

 分散:歴史はひとつでなくてもかまわない

 マージ:分散したものを収束させる

 

 歴史を振り返ることができる

Building History

作業サイクル(一人)

・check out

 head:歴史の先頭

 staging area

index:バッファ headの内容を持ってくる

  worktree 作業場 ここでedit&testを行う

  worktreeで変更した内容をindexに反映させる

 commit

新しいtreeを作り、コメントを記述。最新を表すポインタが移動する

  一つ前はhead^になる。もう一つ前はhead^^

 

headとworktreeとの間にバッファをかませている理由

diff

 worktreeとindex

 worktreeとhead

 とのdiffができる(自分の環境で段階的にdiffができる)


clone

 手元でcommitできる

 成功した結果だけを他の人にみせるようにできるので

 いかにもできるプログラマーと思わせることができる

add

 どのファイルをgitの管理対象とするか

 -p (パッチ形式という意味)

  このオプションをつけると、どの変更を含めるか聞いてくれる

gimmik

 --color-words

単語だけの差分がとれる

stash

 作業(A)途中で別の作業(B)が入っても

 stash save

  作業(A)をコピーしておいて、作業(B)を行う

 stash apply

  作業(B)が終わったら、作業(A)の状態に戻す

 ここでのミソは3方向でマージできること

 作業(A)+作業(B)+Repository

 作業(B)適用後の状態で作業(A)をすすめることができる

 --keep-index

  デバッグ文を取り除いた状態でテストできる

rebase

 失敗してもばれないようにできる手法w

作業サイクル(複数人)

 clone

pull

fetch 他の人がやった変更を反映させる

merge この時点では自分だけが見える状態

push repository(相手)に最終結果を伝える

Archeology 昔の状態をみる

bisect

 歴史の中でどこでNGとなったかを発見する

 どこがOKそうでどこがNGそうかをランクづけする

blame

 どのタイミングで誰が変更したか

 どこから変更したかを把握する

その他

 commit --amend

  修正する。修正前のファイルは3ヶ月ほど残り、その後ガベージコレクタで

  回収される

git参加者によるブログ

kinneko@転職先募集中の日記

http://d.hatena.ne.jp/kinneko/20081004/p4

I sort my thought...

http://d.hatena.ne.jp/walf443/20081004/1223130209

Absolute Playing!

http://d.hatena.ne.jp/Kiske/20081006/1223258182

Stellaqua - TOMの技術日記

Git勉強会に触発されてGit環境を作ってみたよ - Stellaqua - TOMの技術日記

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。