Jest to projekt dla uczestniczek girls-js. Uczymy się korzystać z Gita i GitHuba, tworząc wspólnie prostą aplikację, jaką jest quiz w JavaScripcie.
W prawym górnym rogu tego ekranu znajduje się przycisk Fork. Użyj go a kopia tego repozytorium pojawi się na Twoim koncie GitHub.
W repozytorium na swoim koncie GitHub, które powstało przed chwilą, poszukaj przycisku clone or download. W modalu jest adres Twojego repozytorium - skopiuj go. Teraz otwórz terminal i nawiguj do dowolnego folderu uzywając komend cd ..
(katalog w górę) i cd jakiś-katalog
.
Tam napisz git clone
i po spacji wklej adres zdalnego (czyli swojego na GitHubie) repozytorium. Zostanie ono sklonowane na Twój komputer, do nowego katalogu, który utworzy się sam podczas klonowania. Czyli będzie to wyglądało mniej więcej tak:
Jeśli jest to Twoje kolejne zadanie, najpierw pobierz najnowsze zmiany z naszego wspólnego repozytorium, ponieważ od czasu gdy je sobie klonowałaś ktoś mógł juz coś dodać. Przy pracy z forkiem (czyli to, co my robimy), git musi ogarniać 3 repozytoria: lokalne na naszym komputerze, zdalne na naszym koncie GitHub i zdalne wspólne czyli to z którego forkowałyśmy. Przez polecenie
git remote -v
możemy dowiedzieć się, jakie mamy ustawione zdalne repozytoria. Tradycja githuba mówi, że origin to repozytorium nasze własne, z którego klonowałyśmy a upstream to repozytorium wspólne (z którego forkowałyśmy).
Origin tworzy się automatycznie przy klonowaniu, musimy więc jeszcze ustawić upstream pisząc:
git remote add upstream https://github.com/girlsjs/zadanie-quiz.git
Żeby pobrać najświeższe zmiany, użyj komendy:
git pull upstream
Pobieraj zmiany zawsze przed rozpoczęciem nowego zadania.
W naszym wspólnym repozytorium na GitHubie (girlsjs/zadania-quiz) jest zakładka Issues. Wybierz zadanie dla siebie i przypisz się do niego (assign to me). Jeśli masz pytania - zadaj je w komentarzu pod zadaniem.
W swoim ulubionym edytorze otwórz sklonowane repozytorium (znajdujesz się na branchu master) i utwórz nowy branch o nazwie issue-tuWstawićNrIssue
, np issue-1
. Mozesz do tego uzyć narzędzi w edytorze albo napisać w terminalu:
git checkout -b issue-1
Na tym branchu wykonaj wybrane przez Ciebie zadanie.
Oprócz zwykłego zapisywania zmian od czasu do czasu wykonuj commit, używając narzędzi w edytorze albo pisząc w terminalu najpierw
git add .
a następnie:
git commit -m "tu commit message czyli kilka słów, czego dotyczyła zmiana, np add padding"
Teraz mozesz wysłać zmiany na swój github. W terminalu piszemy (pierwszy push dla danego brancha robimy z opcją -u
, żeby połączyć go z branchem zdalnym ):
git push -u origin issue-1
W kolejnych pushach pomijamy -u
.
Zaloguj się na github do swojego konta i wejdź do repozytorium, do którego właśnie coś dodałaś. Jest tam przycisk new pull request, który po kliknięciu przeniesie Cię na stronę naszego wspólnego repozytorium. Na górze są opcje, co z czym porównujemy. Base repository jest docelowe, head repository jest Twoje. Jako compare wybierz branch, na którym pracowałaś, jako base branch - master. Następnie użyj przycisku create pull request (możesz dodać komentarz jeśli chcesz).
Ktoś z nas przeczyta Twoje zmiany i ustosunkuje się do nich w komentarzach. Możesz na te komentarze odpowiadać, pytać itd. Często konieczne są jednak poprawki. Zrób je na tym samym branchu, nie zapominając o commit. Następnie:
git push origin issue-1
Twój pull request zaktualizuje się sam i może być ponownie czytany.
Jeśli nie będzie już żadnych zastrzeżeń i ostateczna wersja zostanie uzgodniona, Twój kod zostanie scalony (merge) ze wspólnym repozytorium. To jest koniec zadania!
Jak testować funkcje, które nie są na razie nigdzie wywoływane w naszym programie (nie ma np przycisku do kliknięcia albo jakiegoś innego eventu)???
-W konsoli. Po otwarciu pliku index.html w przeglądarce uruchom narzędzia programistki i w konsoli wywołaj tę funkcję (czyli po jej nazwie umieść nawiasy, z parametrem lub bez w zależności od tego, czego Twoja funkcja wymaga) np. showQuestion(3)
. Wtedy możesz sprawdzić, czy dzieje się to, czego oczekujesz.
-Albo zrób sobie roboczy przycisk, który klikiem wywoła tę funkcję. Ale usuń go przed pull requestem :)