1. Rozpoczęcie pracy: klonowanie projektu
Zacznijmy od miejsca, w którym skończyliśmy poprzedni wykład. Masz repozytorium utworzone na GitHubie i teraz musisz pobrać jego lokalną kopię na swój komputer, aby rozpocząć pracę. Ten proces nazywa się klonowaniem.
Krok 1. Uruchom swoje IDE. Jeśli masz otwarty jakiś projekt, zamknij go przez File -> Close Project. W oknie startowym wybierz Clone Repository lub Get from VCS.
Krok 2. W otwartym oknie wklej URL swojego repozytorium. Taki sposób jest przydatny, jeśli klonujesz czyjeś repozytorium. URL można skopiować ze strony repozytorium na GitHubie.
Jeśli klonujesz swoje repozytorium (nasz wariant), najprościej zalogować się do konta GitHub bezpośrednio z IDE. W tym celu wybierz opcję Log in to GitHub. Twoje IDE otworzy przeglądarkę w celu autoryzacji.
Na otwartej stronie śmiało kliknij zielony przycisk Authorize JetBrains. Po tym będziesz mógł wybierać swoje repozytoria prosto z listy w IDE. Wybierz potrzebny projekt i kliknij Clone.
Krok 3. Twoje IDE zapyta, czy ufasz temu projektowi. Ponieważ to Twoje własne repozytorium, kliknij Trust Project.
Krok 4. Konfiguracja antywirusa (dla użytkowników Windows)
Antywirus Windows może ostrzec, że IDE próbuje wykonać nieznane mu działania. Ponieważ zamierzamy tworzyć i uruchamiać programy, musimy pozwolić IDE działać bez ograniczeń. Kliknij przycisk „Automatically”, aby IDE samo dodało potrzebne foldery do wyjątków antywirusa.
2. Zapisywanie zmian: Commit
commit — to jest „migawka”, czyli zapisany stan Twojego projektu w określonym momencie. Pomyśl o tym jak o punkcie zapisu w grze: zawsze możesz do niego wrócić, jeśli coś pójdzie nie tak. Każdy commit ma unikalny identyfikator i wiadomość opisującą wprowadzone zmiany.
gitGraph
commit id: "Initial commit"
commit id: "Add user authentication"
commit id: "Fix login button bug"
commit id: "Refactor database connection"
Historia commitów. Każdy nowy commit bazuje na poprzednim, tworząc chronologię rozwoju projektu.
Krok 1. Wprowadź zmiany.
Jeśli sklonowałeś świeżo utworzone repozytorium, będzie ono zawierać tylko jeden plik — README.md
Otwórz plik README.md i dodaj do niego opis swojego projektu. Gdy tylko zaczniesz edytować plik, IDE podświetli jego nazwę na niebiesko na panelu projektu. Oznacza to, że plik został zmieniony, ale zmiany nie zostały jeszcze zapisane w Git. IDE doda zieloną linię tam, gdzie wprowadziłeś zmiany.
Krok 2. Otwórz okno Commit.
Po lewej w IDE znajduje się zakładka Commit. Po jej otwarciu zobaczysz wszystkie zmiany gotowe do zapisania. Dla zupełnie pierwszego commitu to okno wymaga szczególnej uwagi.
Przyjrzyjmy się, co widzimy:
- Changes: tutaj znajdują się pliki, które są już śledzone w Git, ale zostały zmienione. W naszym przypadku to
README.md, do którego dodaliśmy plan projektu. - Unversioned Files: to nowe pliki, które Git widzi w katalogu projektu, ale jeszcze ich nie śledzi.
Może pojawić się pytanie: czy trzeba dodawać wszystkie te pliki systemowe do repozytorium?
Dobra wiadomość jest taka, że kiedy tworzyliśmy repozytorium na GitHubie, wybraliśmy szablon .gitignore. Ten plik już zawiera reguły mówiące Gitowi, aby ignorował niepotrzebne foldery lub pliki. Ale o tym porozmawiamy szerzej pod koniec lekcji.
Na razie naszym zadaniem dla pierwszego commitu jest dodać wszystkie główne pliki projektu do historii i napisać samą wiadomość commitu.
Krok 3. Zrób commit.
Kliknij przycisk Commit. Gotowe! Zapisałeś „migawkę” swojego projektu w lokalnym repozytorium. Plik znów będzie miał zwykły kolor.
3. Wysyłanie zmian na GitHub: Push
Twoje commity na razie znajdują się tylko na Twoim komputerze. Aby podzielić się nimi z zespołem lub przechowywać je w bezpiecznym miejscu, trzeba wysłać je do zdalnego repozytorium GitHub.
sequenceDiagram
participant Repozytorium lokalne (Twój komputer)
participant Repozytorium zdalne (GitHub)
note over Repozytorium lokalne (Twój komputer): Zrobiłeś jeden lub kilka commitów.
Istnieją tylko tutaj.
Repozytorium lokalne (Twój komputer) ->> Repozytorium zdalne (GitHub): git push (wysłanie commitów)
note over Repozytorium zdalne (GitHub): Twoje commity zostały skopiowane
i bezpiecznie zapisane na serwerze.
Krok 1. Kliknij przycisk Push.
W prawym górnym rogu IDE jest zielona strzałka w górę — to przycisk Push. Kliknij go.
Krok 2. Sprawdź i potwierdź.
Otworzy się okno, w którym zobaczysz wszystkie commity gotowe do wysłania. To Twoja ostatnia szansa, by upewnić się, że wysyłasz dokładnie to, co trzeba. Kliknij Push.
Jeśli wszystko poszło pomyślnie, zobaczysz komunikaty: Pushed commits to origin/main. Create pull request
Krok 3. Sprawdź wynik na GitHubie.
Po pomyślnym wysłaniu otwórz stronę swojego repozytorium na GitHubie. Zobaczysz, że Twoje zmiany się tam pojawiły.
4. Panel sterowania Git
W Twoim IDE jest specjalne menu Git, które można znaleźć na górnym pasku. To Twoje centrum zarządzania wersjami. Poznajmy szybko jego kluczowe pozycje.
Commit: otwiera znane już okno do zapisywania zmian.Push: otwiera okno do wysyłania commitów na GitHub.Update Project: bardzo ważna funkcja. Pobiera świeże zmiany od innych członków zespołu (wykonujegit pull). Klikaj ją każdego ranka przed rozpoczęciem pracy!Branches: otwiera okno do zarządzania gałęziami. Szczegółowo omówimy to w następnej lekcji.Show Git Log: pokazuje całą historię commitów Twojego projektu. Twoja osobista maszyna czasu.
5. Korzystanie z plików .gitignore
Jeśli dodałeś do projektu jakieś pliki pomocnicze i nie chcesz, aby przypadkiem trafiły do repozytorium, możesz dodać je do wyjątków. Służy do tego plik o nazwie .gitignore. To bardzo wygodne, gdy w projekcie są pliki, których nie trzeba przechowywać w systemie kontroli wersji (na przykład pliki tymczasowe, logi, hasła).
Krok 1. Na początek utwórz plik w katalogu projektu, który chcesz ignorować. Na przykład notes.txt. Po utworzeniu pliku kliknij Cancel, jeśli IDE zaproponuje dodanie go do Git.
Krok 2. Kliknij prawym przyciskiem myszy utworzony plik w oknie „Project”. Przejdź do Git --> Add to .gitignore --> Add to .gitignore. Ta opcja dodaje wybrany plik do pliku .gitignore w katalogu głównym Twojego projektu.
Jeśli nie miałeś jeszcze pliku .gitignore, IDE zaproponuje jego utworzenie. Zgódź się.
Krok 3. Twoje IDE automatycznie doda nazwę pliku do .gitignore.
Po dodaniu do .gitignore ignorowane pliki będą wyświetlane na szaro lub brązowo. Przy próbie wykonania commitu te pliki zostaną pominięte. Folder .idea można dodać do ignorowanych.
Nie zapomnij zacommitować samego pliku .gitignore do repozytorium i wysłać zmiany na GitHub, aby wszyscy uczestnicy projektu używali tych samych reguł ignorowania plików.
Wykluczanie plików lokalnych: .git/info/exclude
Oprócz pliku .gitignore, który służy do wykluczania plików dla wszystkich użytkowników projektu, Git udostępnia możliwość tworzenia lokalnych reguł ignorowania w pliku .git/info/exclude. Nie zostaną one zacommitowane do repozytorium i będą działać tylko dla Twojej lokalnej kopii projektu.
Może to być przydatne na przykład do ignorowania plików tworzonych przez Twoje IDE, które nie powinny trafiać do systemu kontroli wersji, ale są specyficzne tylko dla Ciebie.
Ważne! Lokalne reguły ignorowania działają wyłącznie dla Twojej lokalnej kopii repozytorium.
A co jeśli już zacommitowałem?
.gitignore ignoruje tylko nowe, jeszcze nieśledzone pliki. Jeśli plik został już zacommitowany, znajduje się w historii repozytorium i Git będzie go dalej śledził, nawet jeśli dodasz go do .gitignore. W takich sytuacjach jest komenda do terminala: git rm --cached <file>. Ale o niej trzeba będzie poczytać osobno.
Zasady dla .gitignore
W pliku .gitignore podaje się wzorce nazw plików i folderów, które Git powinien ignorować.
Puste wiersze są ignorowane. Aby dodać komentarz, rozpocznij wiersz znakiem #.
Wzorce:
*— zastępuje dowolną liczbę dowolnych znaków. Na przykład*.logignoruje wszystkie pliki z rozszerzeniem.log./— na końcu wzorca oznacza katalog. Na przykładlogs/ignoruje całą zawartość folderulogs.!— na początku wiersza odwraca regułę. Na przykład jeśli masz regułę*.log, ale chcesz śledzićimportant.log, dodaj wiersz!important.log.**— odpowiada dowolnej liczbie zagnieżdżonych folderów. Na przykład**/tempignoruje folderytempna dowolnym poziomie zagnieżdżenia.
Przykład pliku .gitignore
# Skompilowany kod
/bin/
/obj/
# Pliki tymczasowe
*.tmp
*.swp
# Logi
*.log
# Foldery tworzone przez IDE
.idea/
*.user
*.suo
# Wirtualne środowiska i zależności
/venv/
/node_modules/
Gotowe szablony
Nie musisz pisać tych plików od zera. Istnieją gotowe, sprawdzone przez społeczność szablony:
- Kolekcja
.gitignoreod GitHub dla różnych języków i frameworków: https://github.com/github/gitignore. - gitignore.io — wygodny serwis web, który generuje plik
.gitignorepod Twoje technologie.
GO TO FULL VERSION