Ćwiczenie — scalanie gałęzi Boba

Ukończone

Podczas gdy Alice pracuje nad CSS dla witryny internetowej, Bob pracuje w domu, błogo nieświadomy pracy Alice robi. Takie rozwiązanie jest w porządku, bo oboje korzystają z gałęzi! Bob postanawia wprowadzić pewne własne zmiany.

Tworzenie gałęzi dla Boba

  1. Wróć do katalogu Bob i uruchom następujące polecenie, aby utworzyć gałąź o nazwie add-cat. Użyj popularnej checkout -b opcji, aby utworzyć gałąź i przełączyć się do niej w jednym poleceniu.

    cd ../Bob
    git checkout -b add-cat
    
    
  2. Pobierz plik zip zawierający niektóre zasoby witryny internetowej. Następnie rozpakuj pliki zasobów:

    wget https://github.com/MicrosoftDocs/mslearn-branch-merge-git/raw/main/git-resources.zip
    unzip git-resources.zip
    
    
  3. Teraz przenieś plik bobcat2-317x240.jpg do katalogu Assets Boba. Usuń inne pliki. Pobierzesz pliki i użyjesz ich ponownie później.

    mv bobcat2-317x240.jpg Assets/bobcat2-317x240.jpg
    rm git-resources.zip
    rm bombay-cat-180x240.jpg
    
    
  4. Następnie otwórz plik index.html i zastąp wiersz "W końcu umieścimy tutaj zdjęcia kotów" następującym wierszem:

    <img src="Assets/bobcat2-317x240.jpg" />
    
  5. Zapisz plik i zamknij edytor.

  6. Wprowadzono dwie zmiany w gałęzi Boba add-cat — dodano jeden plik i zmodyfikowano inny. Uruchom polecenie git status , aby dokładnie sprawdzić zmiany:

    git status
    
    
  7. Następnie uruchom następujące polecenia, aby dodać nowy plik w katalogu Assets do indeksu i zatwierdzić wszystkie zmiany:

    git add .
    git commit -a -m "Add picture of Bob's cat"
    
    
  8. Bob wykonuje teraz tę samą akcję, którą alicja wykonała wcześniej. Bob przełącza się z powrotem do main gałęzi i wykonuje ściąganie, aby sprawdzić, czy coś się zmieniło:

    git checkout main
    git pull
    
    
  9. Sprawdź dane wyjściowe. Tym razem dane wyjściowe wskazują, że zmiany zostały wprowadzone w main gałęzi w repozytorium udostępnionym (wynik wypychania Alicji). Wskazuje również, że zmiany pobrane z main repozytorium udostępnionego zostały scalone z main repozytorium Boba:

    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. Następnie Bob scala gałąź z gałęziąmain, aby main w repozytorium miały zmiany i zmiany Alicji. Następnie Bob wypycha main komputer do main gałęzi w repozytorium udostępnionym:

    git merge add-cat --no-edit
    git push
    
    

Bob nie używał flagi --ff-only , ponieważ wiedzieli, że main się zmieniły. Scalanie tylko do przodu nie powiodło się.

Synchronizowanie repozytoriów

W tym momencie Bob ma aktualne repozytorium, ale Alice nie. Alicja musi wykonać wersję git pull z repozytorium udostępnionego, aby upewnić się, że ma najnowszą i największą wersję witryny.

Uruchom następujące polecenia, aby zsynchronizować repozytorium Alice z repozytorium udostępnionym:

cd ../Alice
git pull

Poświęć chwilę, aby sprawdzić, czy repozytorium Alice i repozytorium Boba są zsynchronizowane. Każdy z repozytoriów powinien mieć plik JPG w katalogu Assets i <img> element zadeklarowany w pliku index.html . Plik site.css w folderze Assets każdego repozytorium powinien zawierać wiersz definiujący styl CSS o nazwie cat. Ten styl został dodany przez Alice po wprowadzeniu zmian.

Jeśli otworzysz index.html w przeglądarce, zobaczysz następujący obraz:

Zrzut ekranu przedstawiający koty w witrynie internetowej.

W następnej lekcji dowiesz się, jak rozwiązywać konflikty scalania, które występują, gdy zmiany wprowadzone przez co najmniej dwóch deweloperów nakładają się na siebie.