第3回 GitとTFVCのブランチとマージ:連載:TFVC vs Git(2/6 ページ)
前回までで、TFVCとGitの基本的な操作方法の違いを理解していただけたと思う。今回は第1回でも紹介したリポジトリの考え方や実際のリポジトリの運用、同じでも少し異なる用語の解説を実際の操作で紹介する。
Gitのブランチとマージ
GitのブランチとマージはGitを使う上で避けては通れない機能といっても過言ではない。基本的に修正を行う場合にブランチを作って、ブランチを切り替えつつ作業を行う。ブランチの作成方法にはいろいろあるが、「Successful Git」で紹介されているブランチモデルを紹介しよう。詳しくは以下を参照してほしい。
このモデルでは、次のようなブランチを作成することが推奨されている。
- メインブランチ(master): 最新のコミットを表すHEADというコミットを指していることが多い。HEADをクローンすれば、通常は安定版の最新コミットを取得可能だ
- リリースを行うためのreleaseブランチ: masterブランチとほぼ同じだが、リリース作業に時間がかかるような場合、masterブランチと別にreleaseブランチを用意することにより、影響を与えることなく、作業を行える
- 開発を行うためのdevelopブランチ:通常、リリースする前の開発はこのdevelopブランチに対して行われる
- 新機能や新バージョンを開発するためのfeature(フィーチャー)ブランチ: Developブランチから派生する。例えば、製品に新しい機能を追加するとか、内部のフレームワークを刷新するといった場合に使用する
- 特定の機能のバグ修正を行うためのトピックブランチ(トピックによって名前を付ける): 例えば、リリース済みのmasterブランチに対してバグ修正を行う場合、そのバグの管理番号でブランチを作れば分かりやすい。VS Onlineでは、タスクを識別するための番号が付いているので、「bugfix(タスク番号)」といったブランチを作れば、ブランチ名を見ただけでどのタスクに対するブランチなのか、メンバーにも分かりやすいだろう。バグ修正後、そのブランチは、masterブランチ以外にもfeatureブランチやdevelopブランチにマージして、バグ修正が原則全てのブランチに適用されるようにする
「Successful Git」で紹介されているブランチモデルは「Git Flow」と呼ばれている。VSにもGit Flowのブランチモデルを支援する拡張機能が公開されている。リポジトリを作成するときに使用すれば自動的に作成されるので、Git Flowで開発を行う際には使うと便利だろう。
Gitのブランチは細かく作っていけるため、トピックブランチからdevelopブランチへのマージや、masterブランチへのマージも頻繁に行われる。そのため、Gitではコミットやマージ、編集位置の変更機能が充実している(以下の表を参照)。
Gitコマンド | 説明 |
---|---|
reset | コミットの履歴を削除する。公開リポジトリに対して行うと、コミットが消えてしまうので、可能な限り行わない方がよい |
revert | コミット履歴としては残すが、新たな履歴を作成してソースコードの状態を以前の状態に戻す |
rebase | ブランチの基点となるコミットを別のコミットに移動する。他にもコミット前に履歴を消去してpush前に細かいcommitをクリーンアップするために使う |
clean | リポジトリから追跡対象外のファイルを削除する |
コミット関連のコマンド |
Gitコマンド | 説明 |
---|---|
merge | ブランチ間の履歴を結合する |
cherry-pick | ブランチから指定したコミットのみマージする |
マージ関係のコマンド |
これらの操作は現時点においてほとんどVS内では行えず、Git For Windows(msysgit)のようなコマンドツール、Git ExtensionsというVSやエクスプローラーにGitを統合する拡張機能、もしくは、AtlassianのSourceTreeのような外部GUIツールを使用する必要がある。
なお、VS内で操作可能なコマンドに関しては一覧でまとまっているので、参考にしてほしい。
Gitのブランチ作成
VS OnlineのGitチームプロジェクトでは、WebもしくはVSでブランチを作ることが可能だ。ローカルでブランチを作成して、テストまで実施して、問題ないことを確認してからリモートリポジトリにプッシュしよう。
VS Onlineの[CODE]ページでブランチを作成する対象を選んで、右上にある[master]ドロップダウンをクリックし、ブランチの名前を入力して、最後に[New Branch]ボタンをクリックすればサーバーでブランチを作成できる。VSでブランチを作成するにはチームエクスプローラーを使用する。
チームエクスプローラーの[分岐]ページで[新しい分岐]をクリックすると、ブランチの名称を設定できる。このとき、「ブランチの名前はGit Flowに則る」とか「バグ修正のブランチであれば対象のバグ番号を名前に含む」など、ブランチの名前を見ただけでどんな作業が行われているかある程度分かるようにしておくと、チームメンバーで誤解が発生しないため、名前付けのルールは決めておこう。
ローカルリポジトリに分岐を作成
(1)ローカルリポジトリに作成した新しいブランチ名
(2)作成するブランチの派生元ブランチを選択する。
(3)作成したブランチに移動する(Gitでは「チェックアウト」という)。
(4)ブランチを作成する。
(5)作成を中止する。
ここでは「Feature」という名前を付けてブランチを作成する。VS Onlineで作成されているリモートブランチと、ローカルに作成されているブランチを見分ける方法は簡単だ。チームエクスプローラーの[分岐]ページで[新しい分岐]ドロップダウンを開き分岐元を示すドロップダウンしたときに、名前に「origin」と付いて表示されるものがリモートブランチとなる。例えば、名前が「origin/master」ならリモートブランチのmasterということになる。
masterブランチを最初に構築するときも、最初に別のブランチに必要なファイルを登録して、一通り終わったらmasterブランチにマージするという運用を行えばmasterブランチで作業中に他のメンバーにクローンされてしまう事態を防げるだろう。
次に、ブランチに対して行った編集をマージする方法を見る。
Copyright© Digital Advantage Corp. All Rights Reserved.