2011年8月19日金曜日

git入門

・gitの基礎知識
gitの特徴はローカルリポジトリを持てることだ。cvsやsubverionだと、リポジトリはサーバで一元管理され、コミット時は毎回サーバとのやり取りが発生する。サーバにアクセス出来ない環境ではコミットは行えないし、レスポンスもどうしても悪くなる。
gitでは従来のリポジトリをリモートリポジトリと呼び、これに加えてローカルリポジトリというものが導入されている。リモートリポジトリをローカルリポジトリにコピー→コミットはローカルリポジトリに対して行う。→一段落したらローカルリポジトリの変更をリモートリポジトリに反映という使い方をする。
リモートリポジトリには慣習として、名前に .git を付加する。また、リポートリポジトリのブランチにはorigin、ローカルリポジトリのブランチにはmasterという名前が付けられる。

直している最中のディレクトリの中身を作業ツリーと呼ぶ。コミットは作業ツリーの中身を直接登録するのではなく、インデックスと呼ぶ記録域に一時的に登録してから行う。最新のコミットはHEADと呼ぶ。

・特定のファイルをコミット対象から外したい。
git config --global core.excludesfile ~/Dropbox/git/.gitignore

.gitignore
*.obj
*.exe
*.o
*.lib
*.suo
*.pdb
*.ncb
*.exp
*.suo
*~
*.bak
AssemblyInfo.cs
Debug/
Release/

・ユーザ名、メールアドレス設定
$ git config --global user.name "nazochu"
$ git config --global user.email "nazochu@example.com"

・リポジトリを作る。 (With Dropbox)
自分のやりたい使い方というのはリモートブランチをDropboxの同期ディレクトリ内に置くというもの。

# リモートリポジトリ準備
cd ~/Dropbox
mkdir git
cd git
mkdir test.git
cd test.git
git --bare init
#ローカルリポジトリの準備
cd 既存の開発ディレクトリ
git init
git add .
git commit -a
# git pushと打つだけでリモートリポジトリの情報が更新されるよう、
# リモートリポジトリがどこにあるかなどの情報を登録しておく。
git remote add origin ~/Dropbox/git/test.git
git push -u origin master

後は、ローカルリポジトリのディレクトリ以下のファイルを更新したら
git add . → git commit -a → git push でOK

addでインデックスに登録、commitでローカルリポジトリにコミット、pushでリモートリポジトリに反映。

・タグを付ける
git tag 0.1.0.0
git tag -l
# タグ情報をoriginへ
git push --tags

・コミットしたけど漏れがあった。
git add .
git commit --amend

・git addを全部取り消したい
git reset HEAD

・編集中のファイル全てを最後にコミットした状態に戻したい。
git chechout .

・リポジトリとaddしたファイルの差分を見る
git diff --cached

・addしたファイルの情報を見る。
git status

・addしたファイルと最新コミットのファイルの差分を見る
git diff

・編集中のファイルと最新コミットのファイルの差分を見る
git diff --cached

・コミットの履歴を見る
git log

・git pushがrejectされる。
正しい対応策
git pull
git push

ただ、自分一人しか使っていないリポジトリでpushした後にcommit --amendしただけで面倒と言う場合は
git push -f

0 件のコメント:

コメントを投稿