Git i GitHub - poradnik pod Windows
GitHub i Git dla początkujących – jak zacząć od zera
GitHub to obecnie standard branżowy. Praktycznie każdy programista musi z niego korzystać. Co jednak z samymi początkami?
Moja sytuacja jest pewnie bardzo typowa dla wielu „niedoszłych” programistów:
- Chcę mieć konto na GitHubie, żeby być traktowanym poważnie przy staraniu się o pracę (GitHub to już część CV).
- Chcę mieć kod w poważnym miejscu, a nie „gdzieś na dysku” czy „gdzieś w chmurze”.
- Chcę mieć kod w miejscu, w którym mogę go komuś pokazać lub wspólnie z kimś rozwijać.
Krok 1: Założenie konta na GitHubie
Wejdź na stronę: https://github.com/
Proces rejestracji jest prosty, więc go nie opisuję.
Krok 2: Instalacja Gita na Windows
Najpierw warto rozróżnić dwa pojęcia:
- Git – to system kontroli wersji (program instalowany na komputerze).
- GitHub – to serwis internetowy, w którym przechowujemy i synchronizujemy nasze projekty.
Git pobieramy ze strony: https://git-scm.com/
Instalacja jest prosta i nie powinna sprawić problemu.
Konfiguracja Gita – krok po kroku
Przykładem będzie mój projekt – pojedynczy skrypt napisany w języku Hollywood. Plik nazywa się Bazgrolnik.hws.
-
Zainstaluj Git pod Windows. Po instalacji najlepiej korzystać z programu Git Bash (znajdziesz go w menu Start lub w folderze C:\Program Files\Git).
-
Załóż katalog na projekt, np.: C:\Users\Adam\Documents\Bazgrolnik\
-
Skopiuj do tego katalogu plik Bazgrolnik.hws.
Ważne: Nazwa pliku powinna być zawsze taka sama. Nie twórz plików typu Bazgrolnik_v1.hws, Bazgrolnik_v2.hws. Wersjonowaniem zajmuje się Git, a nie nazwa pliku.
-
Uruchom Git Bash w katalogu projektu. Najłatwiej kliknąć prawym przyciskiem myszy w folderze i wybrać „Open Git Bash here”. Działa to zarówno z poziomu Eksploratora Windows jak i Total Commandera.
-
Zainicjuj repozytorium:
git init
Po git init ustaw dane autora commitów:
git config --global user.name "Adam Bogumił Mierzwa"
git config --global user.email "adamus7@interia.pl"
Możesz wpisać dowolne dane, ale najlepiej użyj tego samego emaila co na GitHubie – wtedy commity będą przypisane do Twojego profilu.
Następnie dodaj plik do śledzenia:
git add Bazgrolnik.hws
I wykonaj pierwszy commit:
git commit -m "Wersja 1.0 – pierwsza wersja programu"
Od tej chwili repozytorium istnieje i zawiera pierwszą wersję programu.
Jak działa dalsze wersjonowanie?
Za każdym razem, gdy edytujesz plik Bazgrolnik.hws i chcesz zapisać zmiany:
git add Bazgrolnik.hws
git commit -m "Wersja X.Y – opis zmian"
Git zapisuje tylko różnice między wersjami, więc nie musisz zmieniać nazwy pliku.
Przydatne komendy do sprawdzania stanu:
- git status – pokazuje, które pliki się zmieniły
- git diff – pokazuje dokładne zmiany w plikach
- git log – pokazuje historię commitów
- git log --oneline – historia w skróconej formie
Uwaga o wklejaniu poleceń
Czasem przy kopiowaniu z przeglądarki do Git Bash pojawia się błąd:
bash: $'\E[200~git': command not found
Najczęściej jest to sytuacja, gdy przeklejamy z użyciem myszki. To normalne – wklejane są dodatkowe kody sterujące. Najłatwiej wkleić komendę najpierw do Notatnika (z opcją „Wyczyść formatowanie”) albo użyć Shift + Insert (i to polecam).
Pierwszy commit – co się właściwie stało?
Uwaga dotycząca nazwy gałęzi:
W nowych wersjach Gita i na GitHubie domyślną gałęzią jest zwykle main.
Ja w tym repozytorium używam master (zmieniłem nazwę po wrzuceniu historycznych wersji i tagów).
Dlatego na zrzutach mam `master`. Jeśli u Ciebie jest `main` – po prostu zamieniaj w poleceniach `master` → `main`.
Po wykonaniu pierwszego commita zobaczysz komunikat podobny do tego:
[master (root-commit) 2a5d38f] Wersja 1.0 – pierwsza wersja programu
1 file changed, 32 insertions(+)
create mode 100644 Bazgrolnik.hws
Oznacza to:
- root-commit → to pierwszy commit w historii repozytorium
- 32 insertions → Git policzył 32 linie w pliku
- plik Bazgrolnik.hws jest teraz śledzony przez Gita
Połączenie lokalnego repozytorium z GitHubem
Gdy masz już lokalne repozytorium i co najmniej jeden commit, możesz je podpiąć pod GitHub.
Jeśli stworzyłeś repozytorium bez README (puste), wystarczą dwa polecenia:
git remote add origin https://github.com/AdamMierzwa/bazgrolnik.git
git push -u origin master
Jeśli natomiast GitHub ma już jakiś plik (np. wygenerowało README automatycznie), najpierw trzeba pobrać zmiany z serwera, a dopiero potem wypchnąć swoje:
git remote add origin https://github.com/AdamMierzwa/bazgrolnik.git
git pull origin master --allow-unrelated-histories
git push -u origin master
Mój projekt znajdziesz pod adresem: https://github.com/AdamMierzwa/bazgrolnik
Różne porady
Wydzieliłem je osobno, by nie zaburzać powyższej czystej instrukcji.
Moment połączenia z GitHubem
Tego nie da się zrobić wcześniej niż przy pierwszym wrzucaniu.
Będzie takie okienko:
Można zalogować się na dwa sposoby. Hasłem w przeglądarce albo kodem. Ja wybrałem to drugie, bo miałem skonfigurowane "Windows Hello" (mechanizm w nowych Windows, w moim przypadku zamiast hasła wpisuję "PIN" 6 cyfer, bardzo wygodne).
Moment połączenia Gita z GitHubem wygląda tak:
Jaką wybrać licencję
To określa się przy tworzeniu repozytorium:
Przy udostępnianiu kodu na GitHubie jest do wyboru wiele licencji. Ja wybrałem MIT - jest prosta i pozwala zarówno korzystać każdemu ze źródeł jak i wymaga podawanie autora oryginalnego projektu. Wszelkie inne trzeba raczej omijać, zwłaszcza tzw. wirusowe licencje GPL.
Powiększanie czcionki w okienku basha
No u mnie to było konieczne, bo niedowidzę. Po uruchomieniu Gita opcja jest pod PPM, trzeba kliknąc w belkę okna. Po kliknięciu pokaże się okienko:
Nie mam w zwyczaju przestawiać opcji domyślnych jeśli nie muszę, jedynie przestawiłem czcionkę na 14 pt.
Zaczynanie pracy w katalogu projektu
We właściwościach skrótu Git-bash jest:
Widać, że rozpoczęcie jest zawsze w katalogu użytkownika:
%HOMEDRIVE%%HOMEPATH%
Ja zmieniłem na katalog projektu żeby zawsze zaczynał mi tam
C:\Users\Adam\Documents\Bazgrolnik
Z linijki wyżej ("Element docelowy") trzeba też usunąć końcowy fragment -cd-to-home
To w jakim jest się katalogu widać na belce okna, przykład:
Tak wyglądał mój drugi commit
Vim w natarciu
Coś tam sobie działam, np.
$ git remote add origin https://github.com/AdamMierzwa/bazgrolnik.git
git remote -v
git pull origin main --allow-unrelated-histories
I dostaję w twarz czymś takim:
Git na Windows otwiera edytor nawet wtedy, gdy użytkownik niczego nie konfigurował. Przy merge commit Git musi otworzyć edytor, żeby wpisać wiadomość. Na Windowsie domyślnie jest to wbudowany Vim z Git for Windows – nawet jeśli użytkownik nie instalował Vima. Jeśli ten edytor nie działa to Git wisi.
Rozwiązanie: zamknąć okno i ustawić normalny edytor
git config --global core.editor "notepad"
Po ustawieniu edytora należy powtórzyć komendę, czyli u mnie to miało być git pull origin master --allow-unrelated-histories bo poprzednia próba nie doszła do skutku.
Polecenie git remote -v które użyłem pozwala sprawdzić, czy zdalne repozytorium zostało poprawnie dodane – powinny pojawić się dwa wpisy (fetch i push) z adresem Twojego repozytorium na GitHubie.
Jak dodawać więcej niż jeden plik
Tak, to jest typowe "pytanie głupiego". Problem wszystkich poradników jest taki, że eksperci często nie pamiętają jak to jest nic nie wiedzieć, jakie wtedy są wątpliwości.
Powyżej mój katalog projektu.
.git jest tworzony na początku przez Gita. To wewnętrzne repozytorium Gita, jego własny katalog systemowy. Tam się dzieje wszystko i tam nie zaglądamy.
ikonki - to ikony które dołączyłem do programu. Musiałem je dołączyć, bo są wywoływane w kodzie przy kompilacji właśnie tak - skrypt Hollywood szuka ich w katalogu ikonki.
Bazgrolnik to plik binarny, skompilowany program dla systemu AmigaOS.
Bazgrolnik.hws to ten mój program, hws to skrót od Hollywood script.
Bazgrolnik.info to plik tzw. tooltype, w AmigaOS są dodatkowe pliki z atrybutami, między innymi określona jest tam ikonka. Zasadniczo nie powinno dodawać się takich plików jak tu dałem dla amigowców, czyli skompilowanej binarki i ikonki w .info. Tak się jednak składa, że w środowisku amigowców to standard, taka mała uprzejmość.
Pliki LICENSE i Readme są robione na samym początku przy pierwszym wrzucaniu plików na GitHuba. Plik licencji określa wybraną licencję, a Readme to plik opisujący program. Początkowy Readme jest skromny - przynajmniej mój zawierał tylko jedno zdanie - powinno się go rozbudować. Readme jest wspólny dla wszystkich wersji programu.
I teraz właściwa zwięzła odpowiedź jak wrzucić wszystko - to się dzieje automatycznie po użyciu komendy:
git add .
To dodaje wszytko, co jest w katalogu.
Jak wygląda GitHub od środka
Porównywanie kodu z różnych commitów:
Edycja pliku Readme:
Trwa ładowanie...