Ćwiczenie: proste flow

Komendy potrzebne do ćwiczenia
  1. Utwórz na pulpicie katalogi cwiczenia/flow-demo
    cd ~/Desktop
    mkdir cwiczenia
    cd cwiczenia
    mkdir flow-demo
    cd flow-demo
  2. Utwórz repozytorium (git init)
  3. Stwórz plik index.txt z zawartością "Hello World"
  4. Dodaj plik do repozytorium (git add, git commit) - po 'git commit' wyskoczy okno edytora
  5. Zmień treść pliku na "Witaj świecie"
  6. Sprawdź status repozytorium (git status)
  7. Zrób commit z tą zmianą (git add, git commit)
  8. Dodaj do pliku kolejną linijkę "jest git"
  9. Stwórz nowy plik cars.json i wpisz "toyota"
  10. Sprawdź status repozytorium (git status)
  11. Dodaj plik cars.json do repozytorium
    (git add cars.json, git commit)
  12. Sprawdź status repozytorium (git status)
  13. "Skomituj" plik index.txt
  14. Usuń plik cars.json
  15. Sprawdź status repozytorium (git status)
  16. "Skomituj" usunięcie pliku
  17. Sprawdź status repozytorium (git status)
 

Ćwiczenie wspólnie z demo: reset, revert, commit ammend

  1. cd ~/Desktop/cwiczenia
    git clone https://github.com/git-warsztaty/reset-demo
    cd reset-demo
  2. git status
    git diff
    git diff --staged
  3. git reset --soft HEAD^^
    git status
    git diff
    git diff --staged
  4. git reset --hard HEAD
    git status
    git diff
    git diff --staged
  5. git reset --hard master
    git status
    git diff
    git diff --staged
  6. git reset --hard origin/master
    git status
    git diff
    git diff --staged
  7. git reset --soft HEAD^
    git status
    git checkout .
    git status
    git reset
    git status
    git checkout .
    git status
  8. git reset --soft HEAD^
    git status
    git reset --hard
    git status
  9. touch new-file.txt
    git status
    git checkout new-file.txt
    git status
    git clean new-file.txt -df
    git status
  10. touch new-file.txt
    git status
    git add .
    git commit -m"Add new file"
    git status
    touch new-file.txt
    git add .
    git commit --amend
  11. git revert HEAD
 

Ćwiczenie rebase --interactive

Opis
Skończyliśmy pracę i jesteśmy gotowi do wystawienia pull-requesta, jednak została nam ostatnia czynność - uporządkowanie utworzonych commitów.
Przeglądamy wyniki naszej pracy i rzucają nam się w oczy różne drobne niedoskonałości:
Przygotowanie do ćwiczenia
cd ~/Desktop/cwiczenia
git clone https://github.com/git-warsztaty/devwarsztaty-rebase-interactive-demo rebase-interactive-demo
cd rebase-interactive-demo
Zbiór komend potrzebnych/przydatnych w ćwiczeniu

Spodziewany efekt podejrzany programem gitk
Podejrzyj rozwiązanie

git rebase -i HEAD~6
W edytorze ustawiamy linijki jak następuje
pick c803c5d Add .gitignore
r 4a7dc6f New cars
d e0b2bbc Add wrong car
e 68d5a89 Add Mazdaaa car
pick 1306640 Add Skoda
f feca8bb Correct typo
Zapisujemy plik i zamykamy edytor
W edytorze tekstowym który otworzy się, z commitem "New cars", poprawiamy tytuł, zapisujemy plik i zamykamy edytor
Otwieramy plik cars.txt i poprawiamy tekst "Mazdaaa", zapisujemy
git status
git add .
git status
git commit --amend
W edytorze tekstowym który otworzy się, z commitem "Add Mazdaaa car", poprawiamy tytuł, zapisujemy plik i zamykamy edytor
git status
git rebase --continue
gitk

 

Ćwiczenie rebase vs merge

Opis
Dołącz pracę z brancha feature-branch na brancha master.
Najpierw wykonaj to robiąc merga i sprawdź w programie gitk, czy efekt jest taki sam jak na wzorcowym obrazku.
Następnie zresetuj branche do stanów początkowych i przenieś pracę z brancha feature-branch za pomocą rebase i sprawdź w programie gitk, czy efekt jest taki sam jak na wzorcowym obrazku.
Komendy potrzebne do ćwiczenia (niekoniecznie w tej kolejności)
Przygotowanie do ćwiczenia
Cel wykonania merge (sprawdź programem gitk, czy Ci się udało)
Podejrzyj rozwiązanie git checkout master
git merge feature-branch
Przywrócenie brancha master do początkowej sytuacji

git checkout master
git reset --hard origin/master

Przywrócenie brancha feature-branch do początkowej sytuacji

git checkout feature-branch
git reset --hard origin/feature-branch

Cel wykonania rebase (sprawdź programem gitk, czy Ci się udało)
Podejrzyj rozwiązanie git checkout feature-branch
git rebase master
git checkout master
"git reset --hard feature-branch" albo "git merge feature-branch"
 

Ćwiczenie: rozwiązywanie konfliktów

Opis
Dołącz pracę z brancha tomek-path na brancha master. W trakcie dołączania napotkasz konflikt do rozwiązania.
Rozwiąż konflikt tak, żeby plik program.txt wyglądał jak na wzorcowym obrazku.
Najpierw wykonaj to robiąc merga, oprócz pliku program.txt sprawdź również w programie gitk, czy historia commitów jest taka sama jak na wzorcowym obrazku.
Następnie zresetuj branche do stanów początkowych i przenieś pracę z brancha tomek-path za pomocą rebase i oprócz pliku program.txt sprawdź w programie gitk, czy historia commitów jest taka sama jak na wzorcowym obrazku.
Komendy potrzebne do ćwiczenia (niekoniecznie w tej kolejności)
Przygotowanie do ćwiczenia
Cel - wynikowy plik program.txt
Cel - historia commitów w przypadku merge (sprawdź programem gitk, czy Ci się udało)
Podejrzyj rozwiązanie

git checkout master
git merge feature-branch
git mergetool
Klikanie w kdiff3 albo wybieranie za pomocą skrótów CTRL+1/CTRL+2/CTRL+3 CTRL+PgDn CTRL+PgUp.
Po zakończonej pracy CTRL+S i zamknięcie programu kdiff3.
git commit

Przywrócenie brancha master do początkowej sytuacji

git checkout master
git reset --hard origin/master

Przywrócenie brancha tomek-path do początkowej sytuacji

git checkout tomek-path
git reset --hard origin/tomek-path

Cel - historia commitów w przypadku rebase (sprawdź programem gitk, czy Ci się udało)
Podejrzyj rozwiązanie git checkout tomek-path
git rebase master
git mergetool
Klikanie w kdiff3 albo wybieranie za pomocą skrótów CTRL+1/CTRL+2/CTRL+3 CTRL+PgDn CTRL+PgUp.
Po zakończonej pracy CTRL+S i zamknięcie programu kdiff3.
git rebase --continue
git checkout master
"git reset --hard tomek-path" albo "git merge tomek-path"
 

Ćwiczenie: pushowanie do wspólnego repozytorium

Komendy potrzebne do ćwiczenia
 

Przygotowanie do ćwiczeń z przeglądaniem historii

  1. Przejdź do katalogu ćwiczeń na pulpicie:
    cd ~/Desktop/cwiczenia
  2. Sklonuj przykładowe repozytorium (z projektem open source), do katalogu log-demo:
    git clone https://gitlab.com/terrakok/gitlab-client log-demo
  3. Przejdź do katalogu repo: cd log-demo
  4. Zresetuj repozytorium do wersji: 7ad14ecda2f97a3ff7c3cca44cc7605484b578b5
    git reset --hard 7ad14
    Żeby każdy miał tę samą wersję do ćwiczeń
 

Ćwiczenie: pull requesty

  1. Otwórz w przeglądarcę stronę projektu do którego będziesz kontrybuował github.com/tometchy/git-dev-warsztaty-presentation
  2. Kliknij fork
  3. cd ~/Desktop/cwiczenia
    git clone https://github.com/TWOJ_GITHUB_NICK/git-dev-warsztaty-presentation pull-requests-demo
    cd pull-requests-demo
  4. Wejdź do katalogu _pytania-z-warsztatow (zwróc uwagę, że nazwa katalogu zaczyna się od znaku podkreślenia (tak zwana podłoga)
  5. Skopiuj plik _template.md i nowy plik nazwij TWOJ_GITHUB_NICK.md (stosuj same małe litery)
  6. Uzupełnij plik TWOJ_GITHUB_NICK.md zgodnie z szablonem:
    ---
    day: "2019-06-05"
    author: twoj-nick-github
    about-author: "Uczestnik warsztatów"
    ---

    Treść pytania.
  7. W sekcji day wpisz dzisiejszą datę w formacie "YYYY-MM-DD".
    W sekcji author wpisz swój nick z githuba (stosuj małe litery).
    W sekcji about-author możesz napisać kilka słów o sobie (nie więcej niż treść pytania).
    W ostatniej sekcji wpisz pytanie, jeżeli jeszcze jakieś Cię nurtuje. Jeżeli żadne pytanie nie przychodzi Ci do głowy, to napisz który element Gita jest dla ciebie najciekawszy / najbardziej fascynujący lub najbardziej cię pozytywnie zaskoczył :)
    Nie zmieniaj formatu tekstu, pierwsza i piąta linia musi składać się z trzech myślników, szósta linia musi pozostać pusta, nazwy elementów muszą pozostać takie jakie są, a wartości oddzielone są od nazw dwukropkiem.
  8. Stwórz commit z plikiem który dodałeś
  9. Push (do swojego repozytorium)
  10. Otwórz w przeglądarcę stronę projektu do którego kontrybuujesz github.com/tometchy/git-dev-warsztaty-presentation
  11. Kliknij New pull request i wybierz jako źródło brancha master ze swojego profilu