Git 勉強会@万葉 #1 にいってきた
万葉さんにお邪魔してきました。
http://atnd.org/events/537
前半戦は id:koichiro さんによる Git についてのいろいろ。
後半戦は id:jugyo さんを中心にみんなで Git を使ってみるという感じでした。
以下、内容メモ晒し。
後半戦のは話題に上ったコマンドをひたすらメモった感じなので、見づらいかもしれません。
Git の歴史 (id:koichiro)
Git とは?
- 分散 SCM
- Linus が開発
- メンテナは日本人の濱野さん => Web + DB vol.50 の特集を嫁!
分散になると・・・
メリット
- オフラインで操作可能
- 権限が集中しない
- fork しやすい
デメリット
- 複雑になる
Git の歴史
SCM の歴史
- SCCS => BitKeeper => (Git & Mercurial)
- RCS => cvs => subversion
- 単一ファイル => プロジェクト => 分散
RCS
- 利点: ファイル管理は便利
- 要求: 単体なので、プロジェクトをまとめて管理したい
cvs
- 利点: ロックよりもコピー&マージ
- 要求: 堅牢なデータ、操作性、マルチプラットフォーム
svn
- 利点: 堅牢なデータ構造、 I/F が多彩
Git
- 利点: 分散は便利
- コマンドが多すぎる!
Git の特徴
- Git Object
- SHA1 ハッシュ
- ブランチの扱いが簡単
Github について
- 「我々は Git を使いたいのではない。 Github を使いたいのだ!」 by 角谷さん
- コードとコードで語る漢達のための SNS
- fork が簡単
- コミッタの特権が消滅した => コミッタ中心ではなく、コード中心
- 非常によくできた Rails App
機能
- gist
- ブラウザでのソース編集
- issue track
- gisty で便利に gist を使う
みんなで Git をつっつく (id:jugyo)
Git quickstart
- git init ~ git commit
- git log
- git reset --soft, --hard ==> リポジトリに加わった変更に対して
- git rm --cached ==> 新しくリポジトリに追加したファイルを取り消す
- git reset について
- svn でいう revert は? => reset --hard
- 1 ファイルだけとかできる? => reset でできるが、オプション指定不可になる。 man を見よう。
- git reset --hard HEAD~2 => 2 つ前のコミットへ戻る
- merge 時にコミットを一つにするには??
- テキスト 1 つだけを checkout したい
- git checkout BRANCH FILENAME
- commit しちゃったメールアドレスを変更したい?
- gitconfig に global を付けない
- リポジトリごとにアドレスを変えられる
- ローカル設定は ./.git/config にある
- git add -p
- 一部の差分だけ取り込むことが可能
- git log -u
- git log --stat
- git grep
- color オプションないの?
- kernel.org の man には記載されてる
- 2009/04/20 に追加されたようだ
- git commit --amend
branch について
- git branch BRANCHNAME BRANCH2
- 引数 1: 作るブランチ名, 引数 2: 元にするブランチ
- git merge --no-commit
- コミットなしでマージする
- コミットすると、そこまでのログが全部書き込まれる
- git merge --squash
- squash との違いは?
- squash はそこまでのログは全て破棄されるので、コミット 1 回になる
- git format-patch BRANCHNAME
- パッチが作成される
- git apply PATCHNAME
- パッチファイル適用
- git stash save
- テンポラリ領域に保存する
- git stash apply
- git stash pop
- 1 個だけ取り出す
- git stash drop
- 1 個だけ消す
結論
いっぱいコマンドあるけど、 20 個くらい使えれば生きていけるよ!
参考書:
Pragmatic Version Control (洋書)
Web + DB vol50
講師の方々、参加者の皆様、お疲れ様でした!