Ćwiczenie — scalanie gałęzi Boba
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
Wróć do katalogu Bob i uruchom następujące polecenie, aby utworzyć gałąź o nazwie
add-cat
. Użyj popularnejcheckout -b
opcji, aby utworzyć gałąź i przełączyć się do niej w jednym poleceniu.cd ../Bob git checkout -b add-cat
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
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
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" />
Zapisz plik i zamknij edytor.
Wprowadzono dwie zmiany w gałęzi Boba
add-cat
— dodano jeden plik i zmodyfikowano inny. Uruchom poleceniegit status
, aby dokładnie sprawdzić zmiany:git status
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"
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
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 zmain
repozytorium udostępnionego zostały scalone zmain
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(-)
Następnie Bob scala gałąź z gałęzią
main
, abymain
w repozytorium miały zmiany i zmiany Alicji. Następnie Bob wypychamain
komputer domain
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:
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.