git を使う

Vine Linux 4.2 に git のパッケージがあったので、使ってみました。

下記の手順の中で、別の場所に新しいディレクトリをまったく作らないで作業ができている、というところが、CVSSubversion と異なる点(手軽さという意味で大きなメリット)だと思います。

インストール(Ubuntu でも同様)

 $ ssh yellow
 $ sudo apt-get update
 $ sudo apt-get install git-core
  • Vine 3.x には git-core パッケージはないみたいです

個人のデフォルトを設定する

 git config --global user.email "nishimoto@m.ieice.org"
 git config --global user.name "Takuya Nishimoto"
  • ~/.gitconfig に書き込まれるようです

既存のディレクトリをバージョン管理下におく。ここでは職場で使っている bibdb という自前ツールの例。

 $ cd /export/htdocs/html/bibdb/
 $ git init

管理したいファイルを追加する

 $ git add *.php *.txt
 $ git add cgi-bin/update_publication.cgi
 $ git add *.jpg *.gif .htaccess

追跡されているファイルとされていないファイルを確認する

 $ git status

commit する

 $ git commit -m "first commit"
  • これにより、追跡されているファイルが .git 内に保存され、比較・復元が可能になる

編集してみる

 $ emacs -nw 00readme.txt

差分を確認

 $ git diff
 diff --git a/00readme.txt b/00readme.txt
 index ff26fee..c15f626 100644
 --- a/00readme.txt
 +++ b/00readme.txt
 @@ -4,3 +4,7 @@
  
  TODO:
  <A5><A2><A5><C3><A5><D7><A5><ED><A1><BC><A5><C9><A4><B5><A4><EC><A4><BF>pdf<A4><F2>chmod 644<A4><B9><A4>
 +
 +2009-03-06 by nishimoto
 +
 + $ git init
  • TODO: 文字化けの解決

差分を commit する

 $ git commit --all -m "readme updated"
 [master]: created b5f0737: "readme updated"
  1 files changed, 4 insertions(+), 0 deletions(-)

履歴を確認する

 $ git log
 commit b5f073788c35befd95f5a907777c221f17e63d1e
 Author: Takuya Nishimoto <nishimoto@m.ieice.org>
 Date:   Fri Mar 6 17:01:05 2009 +0900
 
    readme updated
 
 commit 42dff939ec85d2faa212ba42ff617f5fdac215e6
 Author: Takuya Nishimoto <nishimoto@m.ieice.org>
 Date:   Fri Mar 6 16:42:51 2009 +0900
 
    first commit

ブランチを確認する

 $ git branch
  * master

ブランチを作る

 $ git branch experiment
 $ git branch
   experiment
 * master

別のブランチで作業してみる

 $ git checkout experiment
 Switched to branch "experiment"
 $ emacs -nw 00readme.txt
 $ git diff
 diff --git a/00readme.txt b/00readme.txt
 index c15f626..be17e40 100644
 --- a/00readme.txt
 +++ b/00readme.txt
 @@ -8,3 +8,8 @@ TODO:
  2009-03-06 by nishimoto
 
  $ git init
 +
 +2009-03-06 by nishimoto
 +
 + git branch : experiment
 +

experiment ブランチに commit する

 $ git commit --all -m "00readme modified"
 [experiment]: created 609c427: "00readme modified"
  1 files changed, 5 insertions(+), 0 deletions(-)

master ブランチに戻す

 $ git checkout master
 Switched to branch "master"
 $ cat 00readme.txt

 [yellow]
 /home/httpd/html/bibdb/ 
 
 TODO:
 アップロードされたpdfをchmod 644する
 
 2009-03-06 by nishimoto
 
 $ git init

experiment の更新を master にマージする

 $ git merge experiment
 Updating b5f0737..609c427
 Fast forward
  00readme.txt |    5 +++++
  1 files changed, 5 insertions(+), 0 deletions(-)

マージできたことを確認する

 $ git branch
   experiment
 * master
 $ cat 00readme.txt
 [yellow]
 /home/httpd/html/bibdb/
 
 TODO:
 アップロードされたpdfをchmod 644する
 
 2009-03-06 by nishimoto
 
 $ git init
 
 2009-03-06 by nishimoto
 
 git branch : experiment


リンク

更新記録

  • 2009-03-10 : 事前に git config で user.name などを指定するようにしました。