演習 - Bob のブランチをマージする
Alice が Web サイトの CSS に取り組んでいる間、Bob は、Alice が行っている作業のことは何も知らずに、自宅で作業しています。 彼らは両方ともブランチを使用しているため、この配置はまったく問題ありません。 Bob は独自の変更をいくつか加えることにしました。
Bob 用のブランチを作成する
Bob ディレクトリに戻り、次のコマンドを実行して
add-cat
という名前のブランチを作成します。 一般的なcheckout -b
オプションを使用して、1 つのコマンドでブランチを作成し、それに切り替えます。cd ../Bob git checkout -b add-cat
いくつかの Web サイト リソースを含む zip ファイルをダウンロードします。 このリソース ファイルを解凍します。
wget https://github.com/MicrosoftDocs/mslearn-branch-merge-git/raw/main/git-resources.zip unzip git-resources.zip
ここで、bobcat2-317x240.jpg ファイルを Bob の Assets ディレクトリに移動します。 他のファイルを削除します。 これらのファイルは、後で再度ダウンロードして使用します。
mv bobcat2-317x240.jpg Assets/bobcat2-317x240.jpg rm git-resources.zip rm bombay-cat-180x240.jpg
次に、index.html ファイルを開き、"Eventually we will put cat pictures here" (最終的に猫の画像をここに置きます) という行を、次の行に置き換えます。
<img src="Assets/bobcat2-317x240.jpg" />
ファイルを保存して、エディターを閉じます。
これで、Bob の
add-cat
ブランチに 2 つの変更が加えられました。つまり、1 つのファイルを追加し、別のファイルを変更しました。git status
を実行して、変更をもう一度確認します。git status
次に、次のコマンドを実行して、Assets ディレクトリ内の新しいファイルをインデックスに追加し、すべての変更をコミットします。
git add . git commit -a -m "Add picture of Bob's cat"
Bob はここで Alice が先ほど実行した同じ操作を実行します。 Bob は、
main
ブランチに戻り、プルを実行して何らかの変更があったかどうかを確認します。git checkout main git pull
出力を確認します。 今度は、出力に、共有リポジトリ内の
main
ブランチに変更が "加えられた" こと (Alice のプッシュの結果) が示されています。 また、共有リポジトリ内のmain
からプルされた変更が、Bob のリポジトリ内のmain
にマージされていることも示されています。remote: Counting objects: 4, done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From D:/Labs/Git/Bob/../Shared e81ae09..1d2bfea main -> origin/main Updating e81ae09..1d2bfea Fast-forward Assets/site.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
次に、Bob はブランチを
main
ブランチにマージします。そのため、そのリポジトリ内のmain
には、自分の変更 "と" Alice の変更が含まれることになります。 この後、Bob は自分のコンピューター上のmain
を共有リポジトリ内のmain
ブランチにプッシュします。git merge add-cat --no-edit git push
Bob は、main
が変更されたことを知っていたため、--ff-only
オプションを使用しませんでした。 ファストフォワード マージは失敗します。
リポジトリを同期する
この時点で、Bob は最新のリポジトリを持っていますが、Alice は持っていません。 Alice は、共有リポジトリから git pull
を実行して、最新かつ最高のバージョンのサイトになっていることを確認する必要があります。
次のコマンドを実行して、Alice のリポジトリと共有リポジトリを同期させます。
cd ../Alice
git pull
少し時間をとって、Alice のリポジトリと Bob のリポジトリが同期されていることを確認します。 各リポジトリに、Assets ディレクトリ内の JPG ファイルが含まれており、index.html ファイルで宣言された <img>
要素が含まれている必要があります。 各リポジトリ内の Assets フォルダー内にある site.css ファイルには、cat という名前の CSS スタイルを定義する行が含まれている必要があります。 このスタイルは、Alice が変更を行ったときに追加されたものです。
ブラウザーで index.html を開くと、次の画像が表示されます。
次のレッスンでは、2 人以上の開発者によって行われた変更が重複する場合に発生する、マージの競合を解決する方法を学習します。