Git quick reference

基本事項まとめ

基本

Gitは分散型の管理システムである。

定義

リポジトリ(Repository)
日本語で倉庫のこと。すべての変更履歴を格納する部分である。 Gitは分散型であり、各自がローカルにもつリポジトリーと、 全員が共有するメインのリポジトリがある。
コミット(commit)変更をリポジトリーへ反映させること。
プッシュメインのリポジトリへ変更を反映させること。
作業ツリー
リポジトリには、以下の情報が含まれる。情報はすべてプロジェクトのルートディレクトリにある、.git フォルダに格納される。

関係概念図

Main Repository (リモートマシン)
   ↑ push    ↓ fetch
Local Repository (ローカルマシン)
   ↑ git commit
Staging Area
(ローカルマシン)
   ↓
   ↓git checkout
   ↓

   ↑ git add
作業コピー (ローカルマシン)
merge
pull = fetch+merge
tag:
branch:

具体的な操作方法

初めて使うとき一回だけ行えばよい作業

git config --global user.name "Kazuya Aoki"
git config --global user.email "ka@example.com"

~/.gitconfig にあなたの情報がかかれる。これが登録されていないと、 お前はしらない、とおこられる。名前が示すとおりホームディレクトリにおかれる。 (globalが意味するところ。)

リポジトリに対する操作(必要最低限)

リポジトリの作成(一から自分で作る場合)

プロジェクトのルートディレクトリで、

>git init

とする。

リポジトリに変更を加える

>git add index.html
>git add contents.html
>git commit -m "add in hello world HTML"

とすれば、index.html, contents.html を staging area に持っていき、続いてコメントをつけてコミットすることができる。

add は初めてファイルをリポジトリに追加するときだけでなく、 いつでもその変更をコミットしたければ必要である。 リポジトリにあるファイルを変更しても、add してからcommitしないと、 変更されない。

>git commit -a

とすれば、add を省略して commit することができる。 (もちろんRepository に登録されているファイルの更新に限る)

show status

>git status
>git log -1

ブランチ関連操作

Branch

>git branch RB_1.0 master

master branchから、RB_1.0 (Release branch) を作る。
つくるだけで、現在のBranchからは移動せずそのまま。

>git checkout RB_1.0

とすると、新しいブランチに移動できる。

Rebase

>git rebase RB_1.0
RB_1.0ブランチから変更を取り出し、現在ブランチの先頭で変更を適用する。 これをRebaseと呼ぶ。

便利な機能

ファイルを無視する

コンパイル時にできた .o ファイルや、実行ファイルは リポジトリに登録したい人はいないだろう。このような無視したい ファイルがある場合は、

.gitignore

というファイルをつくり、そこにファイル名を記述する。ワイルドカードも使用可能。

.gitignore の内容の例

*.o
*~

GitGUI

>gitk

共用リポジトリ

共用のレポジトリの作成

Depotという名の場所に共用のリポジトリを設定する習慣である。 仮に/tmp/Depotという場所に作るとする。 git init を使って~/public_html ローカルに作ったリポジトリから、/tmp/Depotへ 共用のリポジトリをつくるには、

>cd /tmp/Depot
>git clone --bare ~/puiblic_html public_html.git

とする。共用のリポジトリには".git" をつけるのが習わしである。 --bareは、ベアリポジトリをさし、ここでは決して開発作業は行わない ということを意味する。(まさに共用リポジトリにふさわしい。) この作った共用リポジトリーを親とし、今まで使っていたリポジトリをその子供に設定するには、

git remote add origin /tmp/Depot/public_html

(.git)はつけなくてよい。

git remote update
git pull

共有リポジトリからクローンを作成

>cd my_proj
>git clone /tmp/Depot/public_html