演習 - Bob のブランチをマージする

完了

Alice が Web サイトの CSS に取り組んでいる間、Bob は、Alice が行っている作業のことは何も知らずに、自宅で作業しています。 彼らは両方ともブランチを使用しているため、この配置はまったく問題ありません。 Bob は独自の変更をいくつか加えることにしました。

Bob 用のブランチを作成する

  1. Bob ディレクトリに戻り、次のコマンドを実行して add-cat という名前のブランチを作成します。 一般的な checkout -b オプションを使用して、1 つのコマンドでブランチを作成し、それに切り替えます。

    cd ../Bob
    git checkout -b add-cat
    
    
  2. いくつかの Web サイト リソースを含む zip ファイルをダウンロードします。 このリソース ファイルを解凍します。

    wget https://github.com/MicrosoftDocs/mslearn-branch-merge-git/raw/main/git-resources.zip
    unzip git-resources.zip
    
    
  3. ここで、bobcat2-317x240.jpg ファイルを Bob の Assets ディレクトリに移動します。 他のファイルを削除します。 これらのファイルは、後で再度ダウンロードして使用します。

    mv bobcat2-317x240.jpg Assets/bobcat2-317x240.jpg
    rm git-resources.zip
    rm bombay-cat-180x240.jpg
    
    
  4. 次に、index.html ファイルを開き、"Eventually we will put cat pictures here" (最終的に猫の画像をここに置きます) という行を、次の行に置き換えます。

    <img src="Assets/bobcat2-317x240.jpg" />
    
  5. ファイルを保存して、エディターを閉じます。

  6. これで、Bob の add-cat ブランチに 2 つの変更が加えられました。つまり、1 つのファイルを追加し、別のファイルを変更しました。 git status を実行して、変更をもう一度確認します。

    git status
    
    
  7. 次に、次のコマンドを実行して、Assets ディレクトリ内の新しいファイルをインデックスに追加し、すべての変更をコミットします。

    git add .
    git commit -a -m "Add picture of Bob's cat"
    
    
  8. Bob はここで Alice が先ほど実行した同じ操作を実行します。 Bob は、main ブランチに戻り、プルを実行して何らかの変更があったかどうかを確認します。

    git checkout main
    git pull
    
    
  9. 出力を確認します。 今度は、出力に、共有リポジトリ内の 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(-)
    
  10. 次に、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 を開くと、次の画像が表示されます。

Screenshot that shows cats on the website.

次のレッスンでは、2 人以上の開発者によって行われた変更が重複する場合に発生する、マージの競合を解決する方法を学習します。