ローカルでプライベートに使用する為のgit入門
これは何?
subversion使いが、gitを知るための第一歩をメモ
gitの特徴って何? subversion使いにもやさしく教えて
- 分散型バージョン管理システムが特徴
- ステージング
- コミットログの操作が簡単
- 元々linuxのカーネル開発用なので、大規模向け
- ブランチやマージが速い
分散型バージョン管理システムって何?
ステージングって何?
作業ディレクトリと、ローカルリポジトリの間に、index という領域があって
ローカルリポジトリにcommitする前に、一度 index にファイルを置くことをステージングと言うっぽい
こんな感じ
作業ディレクトリ > [ステージング] > index > [commit] > ローカルリポジトリ
なんでステージングが必要?
- バージョン管理システムで重要なのは、1つのコミットには、1つの主題
- あとでコミットログを見た時に、1つのコミットに色んな修正がはいってると分かりづらい
- 検索ページの〜という不具合の変更と、修正依頼のあった文言の修正
- とかやらかすと、後でどっちかの修正だけ元に戻したい時等に、修正差分を把握しづらいよね!
- でも、何かの作業中に割り込みで、別の作業の修正が入ったりすると、一緒にcommitしちゃいがちだよね
- 後、作業中にちょっとしたバグみっけた時とか
- subversionとかだと、ローカルの差分全部commitしちゃうから、複数の修正を並行してやって取る時とかにcommitできない
- gitならステージングがあるから、1つの修正内容だけをcommitすることが簡単!!
コミットログの操作?
こんなことが可能
- コミットに追加し忘れたファイルを追加/余計なファイルを削除
- コミットログのメッセージの修正
- コミットを無かったことにする
うっかりものには超便利
OSSの開発もしてないし、個人的な小規模プロジェクトでは、subversionで十分?
そうでもないよ
と、言う訳でローカルでプライベートに使用する為の git コマンド一覧
初回
git init
ステージに追加
ステージにカレントディレクトリ以下全てを追加
git add .
ステージに任意のファイルを追加
git add ${path}
各ファイルの差分を見て、ステージに追加するか決める
git add -p
commit
git commit
差分
ステージングと作業ディレクトリの差分があるファイルを見る
git status
ステージングと作業ディレクトリの差分確認
git diff
git diff HEAD
ローカルリポジトリの先頭と、いっこ前の差分
git diff HEAD^..HEAD
差分のあるファイル名だけ確認
git diff --name-only
ログを見る
git log
変更したファイル名も見る
git log --name-status
最新5個のログを見る
git log -5
特定のファイルのログだけ見る
git log ${path}
修正系
git add を取り消したい
git reset HEAD ${path}
新しいファイルをgit add したのを取り消す場合
git reset HEAD -- ${path}
ローカルリポジトリから持ってくる
git checkout ${path}
一つ前のバージョンの内容をローカルリポジトリから持ってくる
git checkout HEAD^ ${path}
作業ディレクトリをローカルリポジトリの最新にして、indexもキレイにする
git reset --hard HEAD
コミット後の修正
前回のコミットに今indexにある修正を追加
もしくは、コミットメッセージの修正
git commit --amend
参考
次回予告
- bitbuket をリポジトリにして、herokuにコードをpushする例
- git rebase と、no branchを理解する