White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

gitを使った作業の進め方

突然ですが、主に自分向けにgitの使い方をメモっておきます。
参考書としてgit入門を上げておきます。でびあんぐる版でも濱野さん版でもどっちでもいいです。最近だと「gitによるバージョン管理」というのもありますが、こちらは中身見ていません。

入門Git

入門Git

Gitによるバージョン管理

Gitによるバージョン管理

入門git

入門git

ここではインストール方法については語りません。ぐぐればいくらでも出てきます。Ubuntuならapt-get install git(git-coreがただし買ったかな?)、Redhat/CentOSなんかならyum install gitで多分入ります。
ここではUbuntu Linux 11.04上で実施しています。

対象

  • gitをなんとなく使ってる人(自分含む)
  • gitを使ってみたい人

今日のシナリオ

gitリポジトリのブランチがmasterしかないときに、あるチケット(TicketA)をとって来て、TicketAの作業をこなす

やり方

まずgitのブランチとしてはmasterしかない状態で進めます。

$ git branch

とかやると、

* master

と出てきます。


次にTicketAを取ってきたときに、作業用にBranchを切ります。

$ git branch ticketA

ここでgit branchを実行するとticketAができていることがわかります。
$ git branch

* master
   ticketA

作業するブランチをticketAに変えます。

$ git checkout ticketA

Switched to branch 'ticketA'

いろいろチケットに沿って作業をします。
作業が終わったら、新規ファイルはgit addしてバージョン管理に追加します。

$ git add hoge.txt

ファイルを追加したらgit commitを行います。git commitと打ち込んでEnterを押すと、コミットメッセージを入れる画面が出てくるので、コミット内容を入れます。
(svnと違いgitの場合では、git commitだけではリモートのリポジトリに送信されません。git pushを行う必要があります。)

$ git commit

(エディタが開く)

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Committer: foo <>
#
# On branch ticketA
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: hoge.txt
#

コミットが終わったら、今度はリモートのリポジトリに向かって送信します。

$ git push origin ticketA

リモートのリポジトリにもticketAが作成されました。


もしリモートに提出したものが問題無いのであれば、最後にmasterブランチにticketAの内容を統合します。

$ git checkout master
$ git merge ticketA
$ git push

と、SVNっぽいノリで書いてみたけど、gitの場合過去改変できるしわざわざタスクごとにブランチ切らなくてもいいのかなぁ。おすすめの作業の仕方あったら教えて下さい。