CodeGym /Kursy /C# SELF /Codzienny cykl developera: Commit, Push i .gitignore

Codzienny cykl developera: Commit, Push i .gitignore

C# SELF
Poziom 26 , Lekcja 1
Dostępny

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.

Okno autoryzacji JetBrains IDE na GitHub

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.
Twoje lokalne commity są wysyłane na zdalny serwer, synchronizując historię projektu.

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 (wykonuje git 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, *.log ignoruje wszystkie pliki z rozszerzeniem .log.
  • / — na końcu wzorca oznacza katalog. Na przykład, logs/ ignoruje całą zawartość folderu logs.
  • ! — 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, **/temp ignoruje foldery temp na 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:

  1. Kolekcja .gitignore od GitHub dla różnych języków i frameworków: https://github.com/github/gitignore.
  2. gitignore.io — wygodny serwis webowy, który generuje plik .gitignore dopasowany do twoich technologii.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION