バージョン管理をsubversionからgitに移行してみた

76de73a1dae79a86bb99a813bd8e8e0a?s=30&d=http%3a%2f%2fkaeruspoon%.net2f2014%2fimages%2fno imageTsukasa OISHI

kaeruspoon関連のソースコードはsubversionでバージョン管理していますが、ウワサのgitを使うことにしてみます。

参考: せっかちな人のためのgit入門

環境はubuntu8.04。まずはgitのインストール。

sudo aptitude install git-core

gitsubversionみたいにレポジトリがひとつではなく、あらゆる環境で分散して管理します。つまりローカルにもレポジトリが存在することになるので、ノートパソコンを持って飛行機の中でも電の中でも開発ができるということ。subversionとsvkをくっつけたような感じですね。
とりあえず、ローカル環境でレポジトリを作ります。

cd ~/devel/kaeruspoon
git init

.gitというディレクトリが作られます。

ではkaeruspoonをコミットしてみよう。コミット前にsubversionの.svnディレクトリを削除しておきます。

find . -name .svn -exec rm -fr {} \;

それからコミット。

git add .

と、思ったら

*** Your name cannot be determined from your system services (gecos).

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident  <tsukasa@blue
.(none)> not allowed

なにか怒られた。
どうもコミットする者の名前を登録しておく必要があるらしい。

git config --global user.email "tsukasa@example.com"
git config --global user.name "tsukasa"

気を取り直してコミット

git add .
git commit -m "kaeruspoon commit"

subversionと同様に、-mオプションをつけなければエディタが立ち上がってそこにコメントが書けます。
ぼくの環境ではデフォでnanoがエディタとして選択されたので、~/.zshrcに以下の行を追加してvimを使うように指定しておきました。

export GIT_EDITOR=vim

それからサーバ上にリモートレポジトリを作ります。サーバの環境はdebianなんだけど、微妙にコマンドが違う。なんでだろう。

cd /var/git/kaeruspoon
git init-db

それからローカルに戻って、ローカルのレポジトリをリモートレポジトリに反映させます。

git remote add origin ssh://silver/var/git/kaeruspoon
git push origin master

このpushが、subversionでいうcommitみたいな感じ。
逆にpullコマンドでリモートレポジトリをローカルに反映させることができる。こちらは update か。

webサーバに、ローカルレポジトリを作って、リモートレポジトリの内容を反映させてみよう。

cd /var/www/rails/
git init-db
git clone ssh://silver/var/git/kaeruspoon

これで環境構築は完了。

では開発・コミット・webサーバへの反映の一連の流れをやってみよう。
どこかのソースを修正したあとに

git status

で状態の変化を確認し、

git diff

で実際の変更箇所を確認できる。このあたりはsubversionと同様。
で、ローカルレポジトリへのコミット。

git commit -a

コミットログは

git log

で確認できます。
さて、リモートレポジトリへの反映。

git push origin master

それからwebサーバ上で

git pull origin master

これですべて完了です。