担当者用ブランチを master にマージする の操作によりマージが完了したら、
こんどは master の方からマージ結果を取り込む。
担当者用ブランチで行った変更内容を master にマージすることは、
すなわち新しいバージョンが作成されたことを意味する。
よって以下の操作でこの新しいバージョンを master 側で採用することで、
master ブランチが更新される。
担当者用ブランチの作成(リモートリポジトリの内容を元に作る場合)を参照。
テスト用サーバに master ブランチを clone する。
- ツールバーの「新規/クローンを作成する」ボタンをクリックする。
- 「リポジトリをクローン」タブを選択する。
- 「元のパス/URL」に共有フォルダのパスを入力する。例えば //server/GIT/mydb.git と入力する。(※)
- 「保存先のパス」に任意のローカルフォルダを入力する。例:c:\WORK\master
- 「リポジトリタイプ」に「これはGitリポジトリです」と表示されていることを確認する。
- 「クローン」をクリックする。
※:リモートリポジトリのパス名を指定するときは、
Windows の UNC名、例えば \\server\GIT/mydb.git などの \ を / で置き換えて指定する。
テスト用サーバでは、各担当者用ブランチは必要ないので、
不要なブランチは削除して master ブランチだけにしておく。
master ブランチは全員で共有しているので、
master ブランチに対する操作は同時に複数の人が行わないようにする。
(同時に複数の人が master を変更すると、リポジトリにプッシュするときに
エラーとなる。エラーを受けて競合解決することで対応可能ではある。
しかし、ここで紹介する GIT 運用では比較的小規模な運用の例であり、
互いに声をかけ合って、競合を避けるのが良い。)
規模が大きくなれば、master を変更する専任の人を置くなどの方法もある。
テスト用サーバに master ブランチをフェッチする。
(クローンした直後は不要だが、フェッチは比較的安全なので何度でもフェッチして良い)
- ツールバーから「フェッチ」をクリックする。
- 「すべてのリモートからフェッチ」をチェックする。(デフォルト)
- 「OK」をクリックする。
想定シナリオの運用ルールを再確認されたい。
- master ブランチで開発作業をしてはならない。ファイルの編集操作は担当者用ブランチで行うこと。
- master ブランチでマージ操作をするのは、競合がない場合(ファストフォワード)に限る。競合があるときのマージは担当者用ブランチで行うこと。
このように、master ブランチは各担当者用ブランチで行われた成果を集大成して、
一つの最終的な成果物にまとめ上げる場所である。
今一度、担当者用ブランチを master にマージするを参照して頂きたい。
master ブランチと、これとマージする担当者用ブランチとの関係が、
樹形図で確認して Y字の形になっているときは競合が起こるので、
Y字になっていないことを確認する。
担当者用ブランチを master にマージするとは逆に、
master ブランチを選択している状態で、担当者用ブランチにマージする。
例えば suzuki ブランチとマージするには以下の操作をする。
- 樹形図で「origin/suzuki」と示されている行を右クリックする。
- ポップアップメニューから「マージ...」を選択する。
- 「OK」をクリックする。
樹形図がY字になっていないときのマージを「ファストフォワード」と呼ぶ。
この場合、新しいコミットは作成されず、ブランチが指し示している
コミットが別のコミットを指すように移動するだけである。
ファイルの状態を覚えている単位がコミットであり、
いくつかあるコミットのうちのどれか特定のコミットを指し示す
ポインタがブランチである。
ファストフォワードは新しいコミットを作らずに、ポインタが移動するだけのマージである。
図で見た方が分かりやすい。
以下の図の origin/suzuki と master はマージ済みであり、Y字になっていない。
この状態で master を origin/suzuki にマージすると以下のように master が移動して他は何も変化がない。
ここで「4コミット先行」などと表示されているのは、リモートリポジトリにプッシュしていないことを示している。
プッシュすると以下のようになる。
コメントをかく