2013年6月20日木曜日

ステップ・バイ・ステップ?Gitユーザ

みなさんこんにちは Nashioです.

今回はGit講座第2回ということで,Git中級編を紹介して行きたいと思います.
まだ初心者という人は前回記事を見てくださいね.

Git中級編

前回はGit入門編ということで基本的なGitの使い方について紹介をしました.
Git中級編では,主にブランチの使い方について紹介をして行きたいと思います.

ソフトウェア開発では,ひとつのソフトウェアに対して複数の人間が関わって開発を行なっていきます.
その際,複数の人間が同時に別々の機能の追加を行ったり,バグの修正を行うようなケースはよく起こります.

このような並行して複数の機能追加や修正を行うためのバージョン管理支援のために,Gitにはブランチという機能が備わっています.

ブランチとは

ブランチとは,更新の履歴を分岐して記録していくための機能です.
分岐したブランチは他のブランチの変更の影響を受けないため,並行して複数の変更を行うことが可能になります.
また,分岐したブランチは他のブランチに合体(マージ)することで一つのブランチにまとめることができます.
上の図は作業のイメージです.
チームのメンバーは他の人の作業に影響を与えないためにメインのブランチの②の状態から自分の作業用のブランチを作成します.
このことを「ブランチを切る」という様に言います.(田胡研では,他はしらん)

そして作業終了後メインのブランチにマージすることで変更を追加することができます.
この様に作業することで,他のメンバーの作業に影響を与えず,さらに追加した履歴を残すことにより,バグが出た時の調査・修正が楽になります.

実際にやってみた

では,実際ブランチを使ったGitの運用を行なってみましょう.
ブランチを切る前の状態はmasterブランチと呼ばれ,そこがメインのブランチとなります.
この状態からGitのディレクトリ内で以下のコマンドを打ってみましょう.
$ git checkout -b [ブランチ名]
このコマンドを打つ事によって,入力したブランチ名で作業用のブランチを作成し,そのブランチの状態に切り替えることができます.
一度作成をしたブランチは消さない限り残るのでこのコマンドは最初の一度だけで大丈夫です.

このあとは,普段通り作業をし,コミットをします.

さて,更新履歴をリモートリポジトリへpushする際には少し注意が必要です.
pushは以下のコマンドで行うことが出来ましたね.
$ git push origin [ブランチ名]
このコマンドを打つ事によって,originの後ろで指定したブランチ名でpushをします.
ブランチ名をきちんと指定しないとめんどくさいことになるので気をつけてくださいね.

これでリモートリポジトリにブランチを登録することが出来ました.
これ以降は,
$ git checkout [ブランチ名]
のコマンドでブランチの切り替えが行える様になります.

また,リモートリポジトリに登録されているブランチについても,状態をpullしてくることによって,他のメンバーも見ることができます.

では続いて,ブランチのマージを行なってみましょう.
今回はmasterブランチにマージをしてみます.

ブランチで作業をし,変更履歴をコミットしたら,まずmasterブランチへ移動しましょう.
masterブランチへ移動したら,以下のコマンドでマージを行います.
$ git merge --no-ff [ブランチ名] -m "マージメッセージ"
上記のコマンドで指定したブランチをmasterブランチにマージすることができます. ちなみにですが,--no-ff オプションは履歴にブランチが存在した情報を残すことができるオプションです. 個人的にはこの方がひと目で変更がわかるのでオススメです.

さあ,これでローカルリポジトリでは,マージが完了しました.
リモートリポジトリにpushをすることで完了です.

残りは後処理です.
ローカルリポジトリのブランチの削除方法は
$ git branch -d [ブランチ名]
これでローカルのブランチが削除されます.
もちろん削除するブランチの状態や変更履歴がある場合ではできませんよ?

リモートリポジトリのブランチの削除方法は
$ git push origin :[ブランチ名]
これでリモートのブランチが削除されます.

おわりに

今回はブランチについて記事を書きました.
ブランチの使い方は様々な形があると思います.
ここに書いただけではないので興味がある方は自分で調べてみてくださいね.

1 件のコメント:


  1. Sonic Drive-In wants feedback from its customers so they can provide much better service in the future. click here :TalkToSonic Survey

    返信削除