覚え書き、ブログ代わりなど不定期に書き散らすWiki

master を担当者用ブランチにマージする




担当者用ブランチを master にマージする の操作によりマージが完了したら、
こんどは master の方からマージ結果を取り込む。
担当者用ブランチで行った変更内容を master にマージすることは、
すなわち新しいバージョンが作成されたことを意味する。
よって以下の操作でこの新しいバージョンを master 側で採用することで、
master ブランチが更新される。

(初回のみ)テスト用サーバに master ブランチのクローンを作成する


担当者用ブランチの作成(リモートリポジトリの内容を元に作る場合)を参照。
テスト用サーバに master ブランチを clone する。
  1. ツールバーの「新規/クローンを作成する」ボタンをクリックする。
  2. 「リポジトリをクローン」タブを選択する。
  3. 「元のパス/URL」に共有フォルダのパスを入力する。例えば //server/GIT/mydb.git と入力する。(※)
  4. 「保存先のパス」に任意のローカルフォルダを入力する。例:c:\WORK\master
  5. 「リポジトリタイプ」に「これはGitリポジトリです」と表示されていることを確認する。
  6. 「クローン」をクリックする。

※:リモートリポジトリのパス名を指定するときは、
Windows の UNC名、例えば \\server\GIT/mydb.git などの \ を / で置き換えて指定する。

テスト用サーバでは、各担当者用ブランチは必要ないので、
不要なブランチは削除して master ブランチだけにしておく。

他の担当者に声をかける


master ブランチは全員で共有しているので、
master ブランチに対する操作は同時に複数の人が行わないようにする。
(同時に複数の人が master を変更すると、リポジトリにプッシュするときに
エラーとなる。エラーを受けて競合解決することで対応可能ではある。
しかし、ここで紹介する GIT 運用では比較的小規模な運用の例であり、
互いに声をかけ合って、競合を避けるのが良い。)
規模が大きくなれば、master を変更する専任の人を置くなどの方法もある。

フェッチする


テスト用サーバに master ブランチをフェッチする。
(クローンした直後は不要だが、フェッチは比較的安全なので何度でもフェッチして良い)
  1. ツールバーから「フェッチ」をクリックする。
  2. 「すべてのリモートからフェッチ」をチェックする。(デフォルト)
  3. 「OK」をクリックする。

競合が起きていないことを確認する


想定シナリオの運用ルールを再確認されたい。
  1. master ブランチで開発作業をしてはならない。ファイルの編集操作は担当者用ブランチで行うこと。
  2. master ブランチでマージ操作をするのは、競合がない場合(ファストフォワード)に限る。競合があるときのマージは担当者用ブランチで行うこと。

このように、master ブランチは各担当者用ブランチで行われた成果を集大成して、
一つの最終的な成果物にまとめ上げる場所である。
今一度、担当者用ブランチを master にマージするを参照して頂きたい。
master ブランチと、これとマージする担当者用ブランチとの関係が、
樹形図で確認して Y字の形になっているときは競合が起こるので、
Y字になっていないことを確認する。

master を担当者用ブランチにマージする


担当者用ブランチを master にマージするとは逆に、
master ブランチを選択している状態で、担当者用ブランチにマージする。

例えば suzuki ブランチとマージするには以下の操作をする。
  1. 樹形図で「origin/suzuki」と示されている行を右クリックする。
  2. ポップアップメニューから「マージ...」を選択する。
  3. 「OK」をクリックする。

樹形図がY字になっていないときのマージを「ファストフォワード」と呼ぶ。
この場合、新しいコミットは作成されず、ブランチが指し示している
コミットが別のコミットを指すように移動するだけである。
ファイルの状態を覚えている単位がコミットであり、
いくつかあるコミットのうちのどれか特定のコミットを指し示す
ポインタがブランチである。
ファストフォワードは新しいコミットを作らずに、ポインタが移動するだけのマージである。

図で見た方が分かりやすい。

以下の図の origin/suzuki と master はマージ済みであり、Y字になっていない。


この状態で master を origin/suzuki にマージすると以下のように master が移動して他は何も変化がない。


ここで「4コミット先行」などと表示されているのは、リモートリポジトリにプッシュしていないことを示している。
プッシュすると以下のようになる。

マージ結果をプッシュする。


マージしたら、忘れずにプッシュボタンをクリックしてリモートリポジトリに反映させる。
以上でマージは完了して、テスト用サーバの C:\WORK\master フォルダは
master ブランチの最新の内容となっている。
この後、必要に応じて最終的なテストをする。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます