1. Rozpoczęcie pracy: klonowanie projektu
Zacznijmy od tego, na czym skończyliśmy w poprzednim wykładzie. Masz repozytorium utworzone na GitHub i teraz musisz pobrać jego lokalną kopię na swój komputer, żeby zacząć pracę. Ten proces nazywa się klonowaniem.
Krok 1. Uruchom swoją IDE. Jeśli masz otwarty jakiś projekt, zamknij go przez File -> Close Project. Na ekranie startowym wybierz Clone Repository lub Get from VCS.
Krok 2. W otwartym oknie wklej URL twojego repozytorium. Ten sposób jest przydatny, jeśli klonujesz czyjeś repozytorium. URL możesz skopiować ze strony repozytorium na GitHub.
Jeśli klonujesz swoje repozytorium (nasz przypadek), najprościej jest zalogować się do swojego konta GitHub bezpośrednio z IDE. W tym celu wybierz opcję Log in to GitHub. Twoja IDE otworzy przeglądarkę do autoryzacji.
Na otwartej stronie śmiało kliknij zielony przycisk Authorize JetBrains. Po tym będziesz mógł wybierać swoje repozytoria bezpośrednio z listy w IDE. Wybierz potrzebny projekt i kliknij Clone.
Krok 3. Twoja 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ż będziemy tworzyć i uruchamiać programy, musimy pozwolić IDE działać bez ograniczeń. Kliknij przycisk „Automatically”, żeby IDE sama dodała potrzebne foldery do wyjątków antywirusa.
2. Zapisywanie zmian: Commit
commit — to „snapshot”, czyli zapisany stan twojego projektu w danym momencie. Myśl o nim 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ą dokonane 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 buduje się 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 projektu. Gdy zaczniesz edytować plik, IDE podświetli jego nazwę niebieskim kolorem w panelu projektu. To oznacza, ż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 jest zakładka Commit. Po jej otwarciu zobaczysz wszystkie zmiany gotowe do zapisania. Dla pierwszego commita to okno wymaga szczególnej uwagi.
Rozbijmy, co widzimy:
- Changes: tutaj są pliki, które już są śledzone przez 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 folderze projektu, ale jeszcze ich nie śledzi.
Pojawia się pytanie: czy trzeba dodać wszystkie te pliki systemowe do repozytorium?
Dobra wiadomość jest taka, że kiedy tworzyliśmy repozytorium na GitHub, wybraliśmy szablon .gitignore. Ten plik już zawiera reguły, które mówią Git, aby ignorował niepotrzebne foldery lub pliki. O tym porozmawiamy szerzej na końcu wykładu.
Tymczasem nasze zadanie na pierwszy commit — dodać wszystkie podstawowe pliki projektu do historii i napisać wiadomość commita.
Krok 3. Zrób commit.
Kliknij przycisk Commit. Gotowe! Zapisales „snapshot” twojego projektu w lokalnym repozytorium. Plik znów zrobi się normalnego koloru.
3. Wysyłanie zmian na GitHub: Push
Twoje commity na razie są przechowywane tylko na twoim komputerze. Aby podzielić się nimi z zespołem lub zachować je w bezpiecznym miejscu, musisz wysłać je do zdalnego repozytorium na GitHub.
sequenceDiagram
participant Lokalny repozytorium (Twój komputer)
participant Zdalne repozytorium (GitHub)
note over Lokalny repozytorium (Twój komputer): Zrobiłeś jeden lub kilka commitów.
Istnieją tylko tutaj.
Lokalny repozytorium (Twój komputer) ->> Zdalne repozytorium (GitHub): git push (wysłać commity)
note over Zdalne repozytorium (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 ostatnia szansa, żeby upewnić się, że wysyłasz 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 GitHub.
Po udanym wysłaniu otwórz stronę swojego repozytorium na GitHub. Zobaczysz, że twoje zmiany pojawiły się tam.
4. Panel zarządzania Git
W twojej IDE jest specjalne menu Git, które znajdziesz na górnym pasku. To twój centrum zarządzania wersjami. Szybko poznajmy jego kluczowe opcje.
Commit: otwiera już znane okno do zapisywania zmian.Push: otwiera okno do wysyłania twoich 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 branchami. Z tym tematem zajmiemy się szczegółowo w następnym wykładzie.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 systemowe i nie chcesz, żeby przypadkowo 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 (np. pliki tymczasowe, logi, hasła).
Krok 1. Na początek stwó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 na utworzony plik w oknie "Project". Przejdź do Git --> Add to .gitignore --> Add to .gitignore. Ta opcja doda wybrany plik do pliku .gitignore w root'cie twojego projektu.
Jeśli nie miałeś jeszcze pliku .gitignore, IDE zaproponuje jego utworzenie. Zgódź się.
Krok 3. Twoja 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 commitowania te pliki zostaną zignorowane. Folder .idea można dodać do ignore.
Nie zapomnij zakomitować samego pliku .gitignore do repozytorium i wysłać zmian na GitHub, żeby wszyscy członkowie projektu korzystali z tych samych reguł ignorowania plików.
Wyjątki lokalnych plików: .git/info/exclude
Oprócz pliku .gitignore, który służy do wykluczania plików dla wszystkich użytkowników projektu, Git daje możliwość tworzenia lokalnych reguł ignorowania w pliku .git/info/exclude. Nie będą one commitowane do repozytorium i będą działać tylko dla twojej lokalnej kopii projektu.
To może być przydatne, np. do ignorowania plików tworzonych przez twoją IDE, które nie powinny trafiać do systemu kontroli wersji, ale są specyficzne tylko dla ciebie.
Uwaga! Lokalne reguły ignorowania działają tylko dla twojej lokalnej kopii repozytorium.
A co jeśli już zakomitowałem?
.gitignore ignoruje tylko nowe, jeszcze nieśledzone pliki. Jeśli już zakomitowałeś plik, on znajduje się w historii repozytorium i Git będzie nadal go śledzić, nawet jeśli dodasz go do .gitignore. Na takie sytuacje jest komenda do terminala: git rm --cached <file>. Ale o niej trzeba poczytać oddzielnie.
Zasady dla .gitignore
W pliku .gitignore podaje się wzorce nazw plików i folderów, które Git ma ignorować.
Puste linie są ignorowane. Aby dodać komentarz, rozpocznij linię od znaku #.
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ład,logs/ignoruje całą zawartość folderulogs.!— na początku linii odwraca regułę. Na przykład, jeśli masz regułę*.log, ale chcesz śledzićimportant.log, dodaj linię!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 webowy, który generuje plik
.gitignoredopasowany do twoich technologii.
GO TO FULL VERSION