Pierwszy wpis z miniserii o kontroli wersji naszego kodu (GIT - łatwy system kontroli wersji) pojawił się już jakiś czas temu, a więc najwyższy czas kontynuować wątek. Co prawda nie ma to bezpośredniego związku z językiem Javascript lub z tworzeniem gier w tym języku, jednak pośrednio ma ogromny. To właśnie w tym serwisie znaleźć można dużą ilość interesujących projektów, bibliotek czy narzędzi. Warto się nimi zainteresować, warto zaglądać im w źródła, warto wspierać twórców i wysyłać im swoje poprawki. Zobaczmy więc, jak się do tego zabrać.

Seria: GIT i GitHub

Jeśli nie wiesz czym jest GIT, to zajrzyj do poniższego, pierwszego wpisu z tej miniserii. Aktualny wpis jest drugim z trzech na temat GITa jako takiego, serwisu społecznościowego GitHub oraz instalacji i zarządzania projektami na własnym serwerze. Poniżej znajdą się linki do wszystkich trzech wpisów, w miarę ich pojawiania się na blogu:

1/3 | GIT tutorial (GIT - łatwy system kontroli wersji)
2/3 | Serwis GitHub (GitHub - kodowanie społecznościowe)
3/3 | GIT na serwerze


Zakładanie konta

Zabawę z serwisem należy rozpocząć od rejestracji - wystarczy odwiedzić adres https://github.com/signup/free i wypełnić formularz. Po chwili mamy już aktywne konto, dzięki któremu będziemy mogli tworzyć własne repozytoria, a także przeglądać i edytować inne. Wybrane konto jest darmowe, a więc nasze projekty będą typu Open Source i będą publicznie dostępne dla wszystkich odwiedzających. Jeśli natomiast zależy nam bardzo na ukryciu naszego (być może komercyjnego) projektu, można wybrać płatne konto, lub... poczekać na trzeci wpis miniserii, w którym pokażę jak uruchomić system kontroli wersji na własnym serwerze.

github


Konfiguracja wstępna

Ok, założyliśmy sobie konto i zostaliśmy automatycznie zalogowani. Co teraz? Możemy zacząć przeglądać repozytoria innych użytkowników serwisu, możemy także zająć się publikacją naszego kodu. Aby tego dokonać, klikamy na "New repository", dzięki czemu naszym oczom ukaże się formularz dodania nowego repozytorium. Wypełniamy pola wpisując odpowiednio nazwę projektu, opis oraz adres internetowy strony domowej projektu. Dwa ostatnie pola są opcjonalne, a więc wystarczy nam nawet sama nazwa. Załóżmy nowe repo o nazwie "SuperProjekt". Po kliknięciu "Create repository" zostaniemy przeniesieni na stronę projektu, gdzie naszym oczom ukaże się strona z pomocą, dzięki której przejdziemy krok po kroku przez etapy konfiguracji wstępnej. Najpierw potrzebujemy dodać nasz klucz publiczny, dzięki czemu podczas publikowania kodu GitHub będzie wiedział, że my, to my.

Generowanie klucza publicznego

Uruchamiamy konsolę i wpisujemy do niej:
ssh-keygen -t rsa -C "adres@email.pl"

Oczywiście podajemy nasz własny adres email - najlepiej ten, na który zarejestrowaliśmy się w serwisie. Potwierdzamy stworzenie nowego klucza wciskając Enter. Nasza para - klucz publiczny i prywatny zostały stworzone. Teraz wystarczy odnaleźć wygenerowany przed chwilą plik z kluczem publicznym (PLIK.pub), skopiować jego zawartość, przejść na stronę ustawień SSH, kliknąć "Add another public key" i wkleić nasz klucz, przy okazji nadając mu dowolnie wybraną nazwę. Potwierdzamy, zapisujemy i gotowe - możemy publikować nasz kod.

Publikowanie projektu w serwisie

Mamy już klucz publiczny, zabierzmy się za najciekawsze - interakcję z serwisem. Jeśli nasz SuperProjekt jest nowym projektem, należy go stworzyć:
mkdir SuperProjekt
cd SuperProjekt
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@github.com:USER/SuperProjekt.git
git push -u origin master

Dzięki tym poleceniom utworzymy na dysku w danym miejscu folder o nazwie naszego projektu, wejdziemy do niego, zainicjujemy GITa, stworzymy plik README, dodamy go do wysłania i zatwierdzamy z odpowiednim komentarzem. Następnie dodajemy ścieżkę do naszego źródła na serwerze (zamieniając USER na naszą nazwę użytkownika), a następnie wysyłamy kod na serwer za pomocą polecenia push. Gotowe, właśnie wysłaliśmy nasz pierwszy kawałek kodu do serwisu GitHub!

Jeśli natomiast chcemy pokazać światu nasz kod, który stworzyliśmy wcześniej na naszym komputerze, wystarczy wpisać poniższe polecenia w konsoli:
cd SuperProjekt
git remote add origin git@github.com:USER/SuperProjekt.git
git push -u origin master

Wchodzimy do folderu z projektem, inicjujemy połączenie z repo na serwerze i wysyłamy tam kod źródłowy. Gotowe, nasz wspaniały projekt jest już dostępny publicznie!

Praca z repozytorium

Podczas normalnej pracy z projektem stosujemy standardowe polecenia GITa wymienione w poprzednim wpisie. Jeśli chcemy opublikować nasze zmiany w serwisie, po prostu korzystamy ze wspomnianego wyżej git push -u origin master. Jeśli natomiast wysłaliśmy kod z innego komputera (lub edytowaliśmy źródła bezpośrednio na stronie GitHub, co także jest możliwe) i teraz chcielibyśmy pobrać zmiany, to wystarczy skorzystać z polecenia git pull origin master.

Fork i Pull request

Poznaliśmy już podstawy jeśli chodzi o nasz kod w GitHub. Co, jeśli chcielibyśmy zainteresować się cudzym projektem? Jeśli znaleźliśmy ciekawy kawałek kodu, który chcielibyśmy usprawnić? Od tego jest "Fork" - przycisk, który kopiuje dane repozytorium do naszej kolekcji i umożliwia nam na nim normalną edycję. Jak już wprowadzimy nasze zmiany na komputerze, a także opublikujemy kod w naszej kopii danego projektu, warto dać znać autorowi oryginału o tym, że chcielibyśmy dodać też coś od siebie. Do tego posłuży nam "Pull request", ale to za chwilę. Warto sprawdzać na bieżąco, czy ktoś w międzyczasie nie wprowadził zmian w oryginalnym projekcie, przez co nasza kopia jest już nieaktualna. Do pobierania zmian służy polecenie fetch - to polecenie, jak i cały mechanizm "Fork" jest dokładnie opisany w tym artykule GitHubowej pomocy. Natomiast jeśli chodzi o "Pull request", to jest to po prostu wysłanie swoich zmian do autora oryginalnego projektu. Może on zdecydować o tym, czy użyje polecenia merge do pobrania i złączenia Twoich zmian z projektem, czy jednak je odrzuci lub po prostu zignoruje.

Podsumowanie

Cały powyższy wpis jest tylko krótkim prowadzeniem, przejściem po podstawowych możliwościach serwisu. GitHub oferuje bardzo dużo, wystarczy się w niego zagłębić. Jeśli w dowolnym momencie natrafisz na problemy, warto zajrzeć do pomocy serwisu GitHub, która jest napisana w prosty i jasny sposób. Cały pomysł opiera się o społeczność, a więc interakcja między programistami jest najważniejsza. Możesz sam dzielić się kodem, podglądać innych, pracować razem z nimi nad ciekawymi projektami, dyskutować, proponować zmiany. Możliwości jest sporo, tylko od Ciebie zależy czy je wykorzystasz.