Branch, HEAD origin/main: Git rozumie, gdzie jesteśmy
Najpierw oddzielmy bieżącą lokalną gałąź od lokalnej wiedzy o GitHub. Wtedy switch, fetch, pull i push przestaną być zbiorem magicznych poleceń.
Przed pierwszą działającą gałęzią zbudujemy jeden spójny model: gdzie leży
zmiana, do którego commita wskazuje bieżąca gałąź i co dokładnie Git aktualizuje przy
fetch, pull oraz
push.
git add nie przenosi pliku w inne miejsce. Plik roboczy
pozostaje na dysku i może się ponownie zmieniać. Polecenie indeksuje migawkę swojej
aktualna zawartośćto będzie częścią następnego commitu.
Commity tworzą graf
Każdy commit zna commit nadarcy. Dlatego story nie jest jak folder z wersje oraz na wykresie. Gałęzią nazwę ruchomą, która wskazuje na pojedynczy commit. HEAD zwykle wskazuje na wybraną gałąź. Nowy commit otrzymuje aktualne Commituj nadrzędne i przesuwaj tę gałąź dalej.
C3 feature/scanner ← HEAD
/
C1──C2 main, origin/main
| Nazwa | Gdzie mieszka | Co oznacza |
|---|---|---|
| main | repozytorium lokalne | twoja lokalna gałąź |
| origin/main | repozytorium lokalne | ostatni znany Git odległym stanie main |
| main on GitHub | repozytorium zdalne | prawdziwa gałąź na serwerze GitHub |
origin/main nie pokazuje stanu GitHub w czasie rzeczywistym. To
lokalne remote-tracking odniesienie, które zmienia się, gdy Git otrzymuje informacje z serwera, na przykład po git fetch.
| Komenda | Co pokazuje |
|---|---|
| git status | które pliki zostały zmienione, które już są w staging, które Git w ogóle nie śledzi |
| git diff | wierszowymi zmianami w drzewie roboczym, jeszcze nie dodanymi do staging |
| git diff --staged | zmiany linijka po linijce już dodane do staging będą zawarte w commitcie |
| git branch -vv | lokalnych oddziałów, obecny oddział i ich upstream- powiązania |
| git log --oneline --graph --decorate --all | Commit graph i link locations |
Krótko
- Gąłąź jest ruchomym odniesieniem do zatwierdzenia; HEAD zwykle wskazuje na obecnie wybraną gałąź.
- main, origin/main i main na GitHub oznaczają trzy rozróżnialne stany, a nie trzy pisowni tego samego obiektu.
- fetch aktualizuje remote-tracking linki; pull dodaje integrację; push aktualizuje zdalną gałąź.