## Podstawy GIT dla początkujących w web-dev 👶
## Co to jest `Git`?
1. Git to rozproszony system kontroli wersji.
2. Cała baza kodu i historia są dostępne na komputerze każdego dewelopera, co umożliwia łatwe tworzenie gałęzi i ich scalanie.
3. Jest używany jako system kontroli wersji (VCS) do śledzenia zmian w plikach komputerowych.
* Rozproszona kontrola wersji
* Koordynuje pracę między wieloma deweloperami
* Kto wprowadził jakie zmiany i kiedy
* Możliwość cofnięcia się w dowolnym momencie
* Lokalne i zdalne repozytoria
## KONCEPTY GIT
* Śledzi historię kodu
* Robi "migawki" Twoich plików
* Ty decydujesz, kiedy zrobić migawkę, wykonując "commit"
* Możesz odwiedzić dowolną migawkę w dowolnym momencie
* Możesz przygotować pliki przed zatwierdzeniem (commit)
### Różnica między Git a GitHub
| Git | GitHub |
| ------- | ----------- |
| Git to oprogramowanie | GitHub to usługa w chmurze |
| Git jest instalowany lokalnie na systemie | GitHub jest hostowany w sieci |
| Jest narzędziem wiersza poleceń | Jest graficznym interfejsem użytkownika |
| Git jest utrzymywany przez Linux | GitHub jest utrzymywany przez Microsoft |
| Skupia się na kontroli wersji i udostępnianiu kodu | Skupia się na scentralizowanym hostowaniu kodu źródłowego |
| Git jest licencjonowany jako open-source | GitHub oferuje darmowy poziom oraz płatne opcje |
| Git został wydany w 2005 roku | GitHub został wydany w 2008 roku |
## Instalacja GIT
* Linux (Debian)
`$sudo apt-get install git`
* Linux (Fedora)
`$sudo yum install git`
* [Pobierz](http://git-scm.com/download/mac) dla Mac
* [Pobierz](http://git-scm.com/download/win) dla Windows
### Kroki procesu instalacji:
1.
2.
3.
4.
5.
6. Następnie kliknij Dalej > Dalej > Dalej > Instaluj
7.
### Po instalacji musimy skonfigurować Git za pomocą Git Bash
1. `git config --global user.name 'YourName'`
2. `git config --global user.email 'YourEmail'`
___
## Komendy Git
___
### Pobieranie i tworzenie projektów
| Komenda | Opis |
| ------- | ----------- |
| `git init` | Inicjalizuje lokalne repozytorium Git |
| `git clone ssh://git@github.com/[username]/[repository-name].git` | Tworzy lokalną kopię zdalnego repozytorium |
### Podstawowe migawki
| Komenda | Opis |
| ------- | ----------- |
| `git status` | Sprawdza status |
| `git add [file-name.txt]` | Dodaje plik do obszaru staging |
| `git add -A` | Dodaje wszystkie nowe i zmienione pliki do obszaru staging |
| `git commit -m "[commit message]"` | Zatwierdza zmiany |
| `git rm -r [file-name.txt]` | Usuwa plik (lub folder) |
| `git push` | Wysyła zmiany do zdalnego repozytorium |
| `git pull` | Pobiera najnowsze zmiany ze zdalnego repozytorium |
### Tworzenie gałęzi i scalanie
| Komenda | Opis |
| ------- | ----------- |
| `git branch` | Wyświetla listę gałęzi (gwiazdka oznacza aktualną gałąź) |
| `git branch -a` | Wyświetla wszystkie gałęzie (lokalne i zdalne) |
| `git branch [branch name]` | Tworzy nową gałąź |
| `git branch -D [branch name]` | Usuwa gałąź |
| `git push origin --delete [branch name]` | Usuwa zdalną gałąź |
| `git checkout -b [branch name]` | Tworzy nową gałąź i przełącza się na nią |
| `git checkout -b [branch name] origin/[branch name]` | Klonuje zdalną gałąź i przełącza się na nią |
| `git branch -m [old branch name] [new branch name]` | Zmienia nazwę lokalnej gałęzi |
| `git checkout [branch name]` | Przełącza się na gałąź |
| `git checkout -` | Przełącza się na ostatnio używaną gałąź |
| `git checkout -- [file-name.txt]` | Odrzuca zmiany w pliku |
| `git merge [branch name]` | Scala gałąź z aktywną gałęzią |
| `git merge [source branch] [target branch]` | Scala gałąź z docelową gałęzią |
| `git stash` | Przechowuje zmiany w brudnym katalogu roboczym |
| `git stash clear` | Usuwa wszystkie przechowywane wpisy |
### Udostępnianie i aktualizowanie projektów
| Komenda | Opis |
| ------- | ----------- |
| `git push origin [branch name]` | Wysyła gałąź do zdalnego repozytorium |
| `git push -u origin [branch name]` | Wysyła zmiany do zdalnego repozytorium (i zapamiętuje gałąź) |
| `git push` | Wysyła zmiany do zdalnego repozytorium (zapamiętana gałąź) |
| `git push origin --delete [branch name]` | Usuwa zdalną gałąź |
| `git pull` | Aktualizuje lokalne repozytorium do najnowszego zatwierdzenia |
| `git pull origin [branch name]` | Pobiera zmiany ze zdalnego repozytorium |
| `git remote add origin ssh://git@github.com/[username]/[repository-name].git` | Dodaje zdalne repozytorium |
| `git remote set-url origin ssh://git@github.com/[username]/[repository-name].git` | Ustawia gałąź origin repozytorium na SSH |
### Inspekcja i porównanie
| Komenda | Opis |
| ------- | ----------- |
| `git log` | Wyświetla zmiany |
| `git log --summary` | Wyświetla zmiany (szczegółowo) |
| `git log --oneline` | Wyświetla zmiany (krótko) |
| `git diff [source branch] [target branch]` | Podgląd zmian przed scaleniem |
---
**Zastrzeżenie**:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego języku źródłowym powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.