Uwaga! Trwają prace nad nową wersją serwisu. Mogą występować przejściowe problemy z jego funkcjonowaniem. Przepraszam za niedogodności!
⛔ Potrzebujesz wsparcia? Oceny CV? A może Code Review? ✅ Dołącz do Discorda!
To jest artykuł praktyczny. Skupimy się w nim na instrukcjach do działań w obrębie Gita, GitHuba (fork, pull request clone) i repozytoriów oraz na pułapkach, jakie mogą czyhać na różnych etapach. Linki do zagadnień teoretycznych oraz wymaganych narzędzi znajdziesz w treści artykułu.
Chcesz być (lepszym) programistą i lepiej zarabiać? Umów się na rozmowę - powiem Ci jak to zrobić!
Jeżeli jeszcze tego nie wiesz lub masz niewielkie pojęcie o tym, jakie Git i GitHub dają możliwości, to zapraszam Cię do lektury artykułu „Co to jest GitHub i do czego służy” (omawiam w nim też krótko Gita).
Aby móc przećwiczyć wskazówki z tego artykułu, będziesz potrzebować:
W poniższych dwóch filmach zobaczysz instalację Gita na Macu i Windowsie, jego prostą konfigurację (ustawienie nazwy użytkownika i adresu e-mail) oraz jedną z opcji stworzenia swojego pierwszego repozytorium zdalnego.
Co ciekawe, autor tych wideo używa programu Visual Studio Code do sklonowania repozytorium z GitHuba (czyli stworzenia repozytorium lokalnego na podstawie repozytorium zdalnego).
My zrobimy to zaraz za pomocą programu Git Bash (czyli tego, który zainstalujesz lub już zainstalowałeś), dzięki czemu poznasz dokładniej jego działanie.
Repozytorium lokalne już zapewne masz. Wybierz lub stwórz na swoim komputerze dowolny katalog: możesz mieć tam tylko plik HTML albo tylko plik JS. Możesz mieć nawet jedynie katalog z zasobami (np. obrazami).
Oczywiście nic nie stoi na przeszkodzie, aby był to katalog z jakimś projektem, lecz na razie – póki nie poznaliśmy możliwości pliku .gitignore – lepiej wybierz katalog z jednym lub kilkoma podstawowymi plikami.
Chcemy, aby nasze pliki były bezpieczne (niezależne od awarii lokalnego dysku) – dlatego warto przechowywać je na repozytorium zdalnym. Jak to zrobić? Użyjemy do tego programu Git Bash.
cd ścieżka-do-katalogu
lub użycie terminala w VS Code), ale nie będziemy się teraz na nich skupiać – wszystkie te drogi prowadzą do tego samego punktu.git init
git add .
git commit -m "add index.html"
Nie zamykaj jeszcze Git Basha. Zaraz się przyda.
Dobrze, teraz wszystko jest gotowe do przesłania plików na repozytorium zdalne. Stwórzmy je więc.
Pliki z naszego repozytorium lokalnego musimy mieć dokąd przesłać, dlatego stworzymy repozytorium zdalne na GitHubie.
Nie będziemy teraz rozpatrywać sytuacji, w której współpracujesz w zespole i robisz pushe do jednej z gałęzi. Są to tematy bardziej zaawansowane, a my skupiamy się na początku nauki programowania.
Dlaczego miałbyś tworzyć repozytorium lokalne na podstawie zdalnego? Przykładowo po to, by:
Sklonowanie repozytorium zdalnego na dysk lokalny jest prostsze niż omawiana przed chwilą odwrotna sytuacja. Mamy jednak dwie drogi, zależnie od tego, co planujemy:
Forkowanie i klonowanie (fork i clone), czyli własne repozytorium lokalne na podstawie czyjegoś repozytorium zdalnego:
git clone https://to-jest-skopiowany-adres-url
cd nazwa-katalogu-z-repo
Ciekawostka: zamiast z Git Bashem możesz pracować z terminalem w programie VS Code (lub innym edytorze kodu – zwykle ta opcja jest wbudowana). Czyli zamiast otwierać swoje lokalne repo za pomocą programu Git Bash, możesz otworzyć je w VSC (uwaga: zawsze upewnij się, że to katalog projektu, a nie np. katalog nadrzędny).
Aby otworzyć terminal w VS Code, wystarczy wybrać z menu opcję Terminal > New Terminal lub skorzystać ze skrótu klawiszowego Ctrl+`.
W terminalu tym wpisujesz komendy dokładnie tak samo, jak w Git Bashu (różnica jest taka, że Ctrl+V działa).
Jesteśmy na etapie, w którym już sforkowałeś i sklonowałeś np. zadanie z kursu. Wykonałeś je u siebie na komputerze, a teraz chcesz przesłać zmiany do repozytorium zdalnego i powiadomić o nich autora
repozytorium (np. Twojego mentora) – aby mógł zapoznać się ze zmianami i je skomentować (czyli wykonać code review).
Upewnij się, że zacommitowałeś (czyli zapisałeś w historii śledzenia zmian) wszystkie modyfikacje kodu i dodane pliki – komendy „git commit” i „git add” już poznałeś – oraz że je pushowałeś (czyli wysłałeś je na repozytorium zdalne za pomocą komendy git push
).
Jeśli to zrobiłeś, to na swoim sforkowanym repo na GitHubie zobaczysz informację o łącznej liczbie commitów, a przy zmienionych plikach znajdziesz wiadomości przypisane do ostatnich zmian.
Jeżeli używasz VS Code, to możesz wykorzystać jego funkcję, która ułatwia dodawanie plików do staging area, robienie commitów i pushów bez korzystania z komend w konsoli. Jeśli Cię to zainteresowało,
to polecam artykuł o commitach i pushach w VS Code.
Czyli jeszcze raz po kolei:
git push
) na zdalne repo.Teraz zmiany, których dokonałeś, mogą zostać skomentowane lub zmergowane (połączone przez właściciela repo) z kodem i plikami z repozytorium. Listę otwartych przez siebie pull requestów znajdziesz na
podstronie swojego konta: „Pull requests”. Jeżeli autor repo ustosunkował się do Twojego kodu w komentarzach, przy swoim PR zobaczysz dymek z liczbą.
Powyżej wspominałem w paru miejscach o błędach, które często zdarzają się początkującym programistom. Tutaj je podsumuję. Jeśli coś nie działa Ci podczas prostego tworzenia, klonowania czy forkowania
repozytorium lub otwierania pull requesta, przejrzyj tę listę.
Upewnij się, że sklonowałeś własne repozytorium lub własnego forka. Być może przypadkowo sklonowałeś cudze repozytorium. W adresie URL wklejanym do komendy musi widnieć nazwa Twojego profilu:
git clone https://github.com/twojaNazwa/twoje-repo.git
Sprawdź, czy na 100% znajdujesz się w katalogu projektu. Bardzo prawdopodobne, że tak nie jest, jeśli podczas próby użycia komend dla Gita widzisz taki błąd:
fatal: not a git repository (or any of the parent directories): .git
Po sklonowaniu repozytorium do katalogu nadrzędnego często zapominamy przejść „w głąb” – do sklonowanego repo. Z poziomu katalogu nadrzędnego (w którym znajdujesz się zaraz po sklonowaniu do niego repozytorium z GitHuba) zrobisz to za pomocą komendy:
cd nazwa-sklonowanego-repo
Możesz też otworzyć nowo utworzony katalog ze sklonowanym repozytorium bezpośrednio w Git Bashu lub w VS Code.
Być może widzisz poniższy błąd:
npm ERR! enoent ENOENT: no such file or directory, open 'C:UsersTwojUserDesktopkatalog-nadrzednypackage.json' npm ERR! enoent This is related to npm not being able to find a file.
Musimy założyć, że wiesz, co robisz i że w sklonowanym repozytorium rzeczywiście jest plik, który umożliwia instalację paczek (package.json).
Jeśli tak, to prawdopodobnie popełniłeś błąd, o którym piszę w punkcie powyżej: po klonowaniu nie przeszedłeś do nowo utworzonego katalogu sklonowanego repozytorium.
Zobaczysz to w ścieżce błędu, która będzie wyglądała np. tak:
'C:UsersTwojUserDesktopkatalog-nadrzednypackage.json'
Zamiast tak:
'C:UsersTwojUserDesktopkatalog-nadrzednykatalog-sklonowanego-repopackage.json'
Przejdź do punktu „Nie mogę dodawać ani commitować zmian”, by rozwiązać problem.
Upewnij się, że:
git push
Na swoim profilu na GitHubie wejdź w zakładkę „Pull Requests” – tam znajduje się lista otworzonych przez Ciebie pull requestów.
Możesz też wejść do pull requestów przypisanych do danego repozytorium. Wówczas na GitHubie ze strony oryginalnego repozytorium wejdź w zakładkę „Pull requests”. Znajdziesz tam wszystkie pull requesty (także te wykonane przez innych programistów).
Jeżeli wykonywałeś tego pull-requesta jakiś czas temu i wracasz do niego teraz (bo np. wcześniej czekałeś na komentarze lub zmergowanie), to możesz nie znaleźć go na liście otwartych pull requestów. Zobacz, czy nie został zakończony (zakładka „Closed”).
Udostępnij ten artykuł:
Potrzebujesz cotygodniowej dawki motywacji?
Zapisz się i zgarnij za darmo e-book o wartości 39 zł!
PS. Zazwyczaj rozsyłam 1-2 wiadomości na tydzień. Nikomu nie będę udostępniał Twojego adresu email.
Chcesz zostać (lepszym) programistą i lepiej zarabiać?
🚀 Porozmawiajmy o nauce programowania, poszukiwaniu pracy, o rozwoju kariery lub przyszłości branży IT!
Umów się na ✅ bezpłatną i niezobowiązującą rozmowę ze mną.
Chętnie porozmawiam o Twojej przyszłości i pomogę Ci osiągnąć Twoje cele! 🎯