メメメモモ

プログラミング、筋トレ、ゲーム、etc

gitの使い方メモ

githubを使い始めたので、gitについての使い方メモです。
gitをインストールしたところからの作業になります。

初期設定

コミットした時などに表示されるユーザ名とメールアドレスを設定します。

$ git config --global user.name "memememomo"
$ git config --global user.email "memememomo@gmail.com"


また、コマンドからの出力を読みやすくするために、color.ui設定をautoにします。

$ git config --global color.ui auto


以上の設定は「$HOME/.gitconfig」ファイルに記述されます。

$ cat $HOME/.gitconfig
[user]
	name = memememomo
	email = memememomo@gmail.com
[color]
	status = auto
	branch = auto
	ui = auto

作業領域をgitバージョン管理対象にする

f:id:memememomo:20100418205754p:image

「homepage」というディレクトリに「index.html」ファイルが入っているとします。
このディレクトリをgitバージョン管理対象にします。


「homepage」ディレクトリに移動して、コマンドを実行します。

$ cd homepage
$ git init


実行すると同ディレクトリに「.git」というディレクトリができます。
このディレクトリがリポジトリとなります。

f:id:memememomo:20100418205827p:image


この時点では、index.htmlファイルはバージョン管理下にありません。
つまり、リポジトリから見てindex.htmlファイルはどういうものかは知りません。
「git status」コマンドを打つと「Untracked files:」という項目に「index.html」があるのが分かります。

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       index.html
nothing added to commit but untracked files present (use "git add" to track)


index.htmlファイルはまだトラックしていないファイルだということを表示しています。


index.htmlファイルをトラックするようにするには下記のコマンドを打ちます。

$ git add .


このコマンドの後にもう一回「git status」を打つと表示が変わるかと思います。



この時点では、まだリポジトリに変更を確定していません。
変更をリポジトリに確定する事を「コミット」といいます。
コミットをするコマンドを打ちます。

$ git commit -m "First commit"


これでリポジトリに変更が反映されます。

f:id:memememomo:20100418210457p:image


普段の開発の流れ

gitを用いた開発の流れは下記のようになります。

  1. ファイルを編集、新規作成
  2. 「git status」で変更状況を確認。「git diff」で変更箇所を確認。
  3. 編集作業が終わったら「git add ファイル名」または「git add -u」で変更ファイルを記録する指定を行なう。
  4. 「git commit」でリポジトリに変更箇所を反映


となります。これは一人で開発している時の流れになっています。
また、「git add -u」と「git commit」を一括で実行する「git commit -a」というコマンドがあります。

.gitignoreの設定

同じディレクトリにバージョン管理するべきでないファイルがあるときがあります。
例えばemacsを使っていると「index.html~」というバックアップファイルができます。
こういうファイルは、「git status」で毎回必ず表示されてしまいます。
こういったファイルを無視するように「.gitignore」を設定します。

$ cat .gitignore <<\EOF
*~
EOF


これでバックアップファイルが無視されるようになります。

共同リポジトリを作成

いままでのリポジトリは、個人的なものです。
このリポジトリだけでも共同作業ができるのですが、やはり共同用のリポジトリがあると便利です。


下記の手順で共同用のリポジトリを用意します。

$ mkdir ~/pub/repository/homepage.git
$ cd ~/pub/repository/homepage.git
$ git init --bare


これで、「~/pub/repository/homepage.git」という共同用リポジトリができました。
次に、共同用リポジトリに個人用のリポジトリの設定を反映させます。

$ git push ~/pub/repository/homepage.git master

f:id:memememomo:20100418211417p:image



これで、共有リポジトリからコピーを持って来れるようになりました。
コピーを持ってくるには下記のようにします。

$ git clone ~/pub/repository/homepage.git homepage.new

f:id:memememomo:20100418211819p:image


homepage.newで編集作業を行なった時に、共同リポジトリに反映させる手順は下記のようになります。

① $ emacs profile.html
② $ git commit -a "add prifile.html
③ $ git push origin master

f:id:memememomo:20100418212338p:image



homepage.newの変更をhomepageディレクトリに反映させる場合、
homepageディレクトリ下で下記のコマンドを実行します。

$ git pull ~/pub/repository/homepage.git

f:id:memememomo:20100418212701p:image

コマンドを実行すると、profile.htmlファイルが反映されます。


この流れで共同開発が行なわれます。


githubを使った作業

共同リポジトリは、同じコンピュータにある必要がありません。
ネットワークに繋がっている他のコンピュータにある共同リポジトリからコピーを持ってくることもできます。
cloneやpushやpullは、ネットワークを通じて行なわれます。
通信をどのようなプロトコルで行なうかは、選択できるようになっています。


githubでは、共同リポジトリを作成して、Web上で共有できるサービスとなっています。


f:id:memememomo:20100418213417p:image


参考

WEB+DB PRESS Vol.50

WEB+DB PRESS Vol.50


「はじめてのGit」という記事で、かなり詳しく解説がなされています。
初心者用・・・?


github