Ćwiczenie — tworzenie gałęzi jako Alice
Twój przyjaciel dewelopera Alice chce dodać arkusz CSS, aby stylować zdjęcia kotów w witrynie internetowej. Alicja chce wykonać tę pracę we własnej gałęzi.
Ustawienia
Zanim będzie można przyjąć rolę Alicji, musisz wykonać pewną pracę, aby skonfigurować nagie repozytorium dla wszystkich, aby udostępnić, a następnie dodać kilka plików.
Usługa Git jest już zainstalowana dla nas w usłudze Azure Cloud Shell, więc możemy użyć usługi Git w usłudze Cloud Shell z prawej strony.
Uwaga
W tym ćwiczeniu usługa Cloud Shell musi być w trybie klasycznym . W górnej części okna usługi Cloud Shell wybierz ikonę Więcej (...), wybierz pozycję Ustawienia i wybierz pozycję Przejdź do wersji klasycznej.
Tworzenie udostępnionego repozytorium nagie
Utwórz nowy katalog o nazwie Shared.git , aby przechowywać nagie repozytorium:
mkdir Shared.git cd Shared.git
Teraz uruchom następujące polecenie, aby utworzyć nagie repozytorium w katalogu udostępnionym:
git init --bare
Ustaw nazwę gałęzi domyślnej dla nowego repozytorium. Aby wykonać ten krok, możesz zmienić
HEAD
gałąź tak, aby wskazywała inną gałąź. W tym przypadkumain
gałąź:git symbolic-ref HEAD refs/heads/main
Klonowanie repozytorium udostępnionego dla Boba
Przenieś jeden poziom z tego katalogu i utwórz katalog dla Boba, aby zapisać jego repozytorium:
cd .. mkdir Bob
Sklonuj i skonfiguruj repozytorium dla Boba:
cd Bob git clone ../Shared.git . git config user.name Bob git config user.email bob@contoso.com git symbolic-ref HEAD refs/heads/main
Uwaga
Ponieważ chcesz rozpocząć od domyślnej main
gałęzi , musisz zmienić wartość HEAD
, aby wskazać refs/heads/main
, a nie refs/heads/master
domyślną nazwą gałęzi.
Dodawanie podstawowych plików
W ostatnim kroku konfiguracji dodamy nasze podstawowe pliki witryny internetowej i wypchniemy je do udostępnionego repozytorium. W przypadku tych poleceń nadal pracujemy w katalogu Bob .
Utwórz niektóre pliki, uruchamiając polecenie systemu Linux
touch
, a następnie przygotuj je i zatwierdź przy użyciu usługi Git:touch index.html mkdir Assets touch Assets/site.css git add . git commit -m "Create empty index.html and site.css files"
Teraz dodaj kod HTML do pliku przy użyciu edytora kodu usługi Cloud Shell. Edytor można otworzyć, uruchamiając
code
polecenie . Otwórz index.html w edytorze online, wprowadzając poleceniecode index.html
w wierszu polecenia terminalu:code index.html
Wklej następujący kod HTML:
<!DOCTYPE html> <html> <head> <meta charset='UTF-8'> <title>Our Feline Friends</title> <link rel="stylesheet" href="CSS/site.css"> </head> <body> <nav><a href="./index.html">home</a></nav> <h1>Our Feline Friends</h1> <p>Eventually we will put cat pictures here.</p> <footer><hr>Copyright (c) 2021 Contoso Cats</footer> </body> </html>
Zapisz plik i zamknij edytor. Możesz wybrać wielokropek "..." w prawym rogu edytora lub użyj skrótu (naciśnij Ctrl+S w systemach Windows i Linux; naciśnij Cmd+S w systemie macOS).
Przejdź do katalogu Assets , a następnie otwórz site.css w edytorze:
cd Assets code site.css
Dodaj następujący kod CSS do pliku:
h1, h2, h3, h4, h5, h6 { font-family: sans-serif; } body { font-family: serif; background-color: #F0FFF8; } nav, footer { background-color: #C0D8DF; }
Zapisz plik i zamknij edytor.
Wróć do katalogu Bob i zatwierdź ponownie:
cd .. git add . git commit -m "Add simple HTML and stylesheet" git push --set-upstream origin main
Uwaga
Ponieważ używamy innej domyślnej nazwy gałęzi, musisz poinformować usługę Git o skojarzeniu gałęzi głównej z gałęzią główną repozytorium źródłowego.
Sprawdź dane wyjściowe. Jeśli zostanie wyświetlone ostrzeżenie podobne do tego przykładu, nie martw się. To ostrzeżenie oznacza tylko, że użytkownicy wiedzą o zmianie domyślnych zachowań usługi Git.
warning: push.default is unset; its implicit value has changed in Git 2.0 from 'matching' to 'simple'. To squelch this message and maintain the traditional behavior, use: git config --global push.default matching To squelch this message and adopt the new behavior now, run: git config --global push.default simple When push.default is set to 'matching', git will push local branches to the remote branches that already exist with the same name. Since Git 2.0, Git defaults to the more conservative 'simple' behavior, which only pushes the current branch to the corresponding remote branch that 'git pull' uses to update the current branch. See 'git help config' and search for 'push.default' for further information. (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 'current' instead of 'simple' if you sometimes use older versions of Git)
Jeśli chcesz upewnić się, że nie widzisz tego ostrzeżenia ponownie, możesz uruchomić następujące polecenie:
git config --global push.default simple
Sprawdź dane wyjściowe dla tego wskaźnika powodzenia:
Counting objects: 9, done. Delta compression using up to 2 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (9/9), 953 bytes | 953.00 KiB/s, done. Total 9 (delta 0), reused 0 (delta 0) To ../Shared.git * [new branch] main -> main
Tworzenie gałęzi dla Alice
Alicja chce utworzyć gałąź tematu o nazwie add-style
, aby wykonać swoją pracę. Przyjmijmy rolę Alicji, a następnie utwórzmy gałąź i dodajmy kod do tej gałęzi.
Przenieś w górę jeden poziom z tego katalogu i utwórz katalog dla Alicji na potrzeby kopii repozytorium:
cd .. mkdir Alice
Sklonuj repozytorium dla Alice, a następnie skonfiguruj je:
cd Alice git clone ../Shared.git . git config user.name Alice git config user.email alice@contoso.com
Masz teraz bieżącą kopię repozytorium. Aby potwierdzić, możesz wyświetlić listę zawartości pliku i uruchomić polecenie
git status
, aby potwierdzić stan repozytorium.ls git status
Uruchom polecenie ,
git branch
aby utworzyć gałąź o nazwieadd-style
. Następnie uruchomgit checkout
polecenie , aby przełączyć się do tej gałęzi (uczynić ją bieżącą gałęzią).git branch add-style git checkout add-style
W katalogu Alice/Assets otwórz site.css. Dodaj następującą definicję klasy CSS w dolnej części pliku:
.cat { max-width: 40%; padding: 5 }
Zapisz zmiany w pliku i zamknij edytor.
Zatwierdź zmianę:
git commit -a -m "Add style for cat pictures"
W tym momencie Alicja chce udostępnić swój styl wszystkim innym osobom, więc przełączają się z powrotem do
main
i wykonują ściąganie, jeśli ktoś inny wprowadził zmiany:git checkout main git pull
Dane wyjściowe mówią, że
main
gałąź jest aktualna (innymi słowy,main
na komputerze Alicji jest zgodnamain
z repozytorium udostępnionym). Dlatego Alice scalaadd-style
gałąź z gałęziąmain
, uruchamiając poleceniegit merge --ff-only
, aby przeprowadzić szybkie scalanie. Następnie Alice wypychamain
repozytorium do repozytorium udostępnionego.git merge --ff-only add-style git push
W tym przypadku scalanie szybkie do przodu nie było ściśle konieczne, ponieważ main
gałąź nie miała żadnych zmian, a usługa Git scaliłaby zmiany mimo to. Jednak użycie flagi --ff only
jest dobrym rozwiązaniem, ponieważ scalanie kończy się niepowodzeniem --ff-only
, jeśli main
uległo zmianie.