Lokalna gałąź jest gałęzią, że tylko można (użytkownik lokalny) zob. Istnieje tylko na twoim lokalnym komputerze.
git branch myNewBranch # Create local branch named "myNewBranch"
Zdalnego gałąź jest gałęzią na odległym miejscu (w większości przypadków origin
). Możesz wypchnąć nowo utworzony oddział lokalny myNewBranch
do origin
. Teraz inni użytkownicy mogą to śledzić.
git push -u origin myNewBranch # Pushes your newly created local branch "myNewBranch"
# to the remote "origin".
# So now a new branch named "myNewBranch" is
# created on the remote machine named "origin"
Zdalnego śledzenia oddział jest lokalna kopia zdalnej gałęzi. Po myNewBranch
naciśnięciu origin
powyższego polecenia origin/myNewBranch
na komputerze zostanie utworzona zdalna gałąź śledzenia o nazwie . Ta zdalna gałąź śledzenia śledzi zdalną gałąź myNewBranch
na origin
. Możesz zaktualizować swoją gałąź zdalnego śledzenia, aby była zsynchronizowana ze zdalną gałęzią za pomocą git fetch
lub git pull
.
git pull origin myNewBranch # Pulls new commits from branch "myNewBranch"
# on remote "origin" into remote tracking
# branch on your machine "origin/myNewBranch".
# Here "origin/myNewBranch" is your copy of
# "myNewBranch" on "origin"
Lokalny oddział śledzenia jest lokalny oddział , który śledzi inny oddział. Dzieje się tak, abyś mógł wypychać / wyciągać zatwierdzenia do / z innej gałęzi. Lokalne oddziały śledzenia w większości przypadków śledzą zdalne oddziały śledzenia. Gdy wypychasz oddział lokalny do origin
korzystania git push command
z -u
opcji z opcją (jak pokazano powyżej), konfigurujesz oddział lokalny myNewBranch
do śledzenia gałęzi zdalnego śledzenia origin/myNewBranch
. Jest to potrzebne do użycia git push
i git pull
bez określania nadrzędnego źródła, do którego należy wypychać lub wyciągać.
git checkout myNewBranch # Switch to myNewBranch
git pull # Updates remote tracking branch "origin/myNewBranch"
# to be in sync with the remote branch "myNewBranch"
# on "origin".
# Pulls these new commits from "origin/myNewBranch"
# to local branch "myNewBranch which you just switched to.
Oto długa odpowiedź.
Piloty:
Jeśli używasz Git wspólnie, prawdopodobnie będziesz musiał zsynchronizować swoje zatwierdzenia z innymi maszynami lub lokalizacjami. W terminologii Gita każda maszyna lub lokalizacja jest nazywana zdalną i każda może mieć jedną lub więcej gałęzi. Najczęściej będziesz mieć tylko jeden, nazwany
origin
. Aby wyświetlić wszystkie piloty, uruchomgit remote
:Możesz sprawdzić, do których lokalizacji te nazwy zdalne są skrótami, uruchamiając
git remote -v
:Każdy pilot ma katalog w
git/refs/remotes/
:Gałęzie na twojej maszynie:
TLDR: na komputerze lokalnym masz trzy rodzaje oddziałów: lokalne oddziały bez śledzenia, lokalne oddziały śledzące i oddziały ze zdalnym śledzeniem. Na zdalnym komputerze masz tylko jeden rodzaj gałęzi.
1. Oddziały lokalne
Możesz wyświetlić listę wszystkich lokalnych oddziałów na swoim komputerze, uruchamiając
git branch
:Każdy oddział lokalny ma plik pod
.git/refs/heads/
:Na twoim komputerze są dwa typy oddziałów lokalnych: bez śledzenia oddziałów lokalnych i śledzące oddziały lokalne.
1.1 Brak śledzenia oddziałów lokalnych
Lokalne oddziały bez śledzenia nie są powiązane z żadnym innym oddziałem. Tworzysz go, biegając
git branch <branchname>
.1.2. Śledzenie lokalnych oddziałów
Lokalne oddziały śledzące są powiązane z innym oddziałem, zwykle oddziałem zdalnego śledzenia. Tworzysz go, biegając
git branch --track <branchname> [<start-point>]
.Możesz sprawdzić, który z lokalnych oddziałów śledzi oddziały za pomocą
git branch -vv
:Na podstawie danych wyjściowych tego polecenia można zobaczyć, że gałąź lokalna
master
śledzi gałąź zdalnego śledzeniaorigin/master
, a gałąź lokalnanew-feature
niczego nie śledzi.Innym sposobem sprawdzenia, które gałęzie śledzą gałęzie, jest przyjrzenie się
.git/config
.Śledzenie lokalnych oddziałów jest przydatne. Pozwalają na uruchamianie
git pull
igit push
bez określania, której gałęzi nadrzędnej użyć. Jeśli gałąź nie jest skonfigurowana do śledzenia innej gałęzi, pojawi się błąd podobny do tego:2. Zdalne śledzenie oddziałów (nadal na twoim komputerze)
Możesz wyświetlić listę wszystkich gałęzi zdalnego śledzenia na swoim komputerze, uruchamiając
git branch -r
:Każda gałąź zdalnego śledzenia ma plik w
.git/refs/<remote>/
:Pomyśl o swoich gałęziach zdalnego śledzenia jako o lokalnej pamięci podręcznej dla tego, co zawierają komputery zdalne. Możesz zaktualizować swoje gałęzie zdalnego śledzenia za pomocą
git fetch
, którygit pull
używa za kulisami.Mimo że wszystkie dane dla oddziału zdalnego śledzenia są przechowywane lokalnie na twoim komputerze (jak pamięć podręczna), nadal nie nazywa się to oddziałem lokalnym. (Przynajmniej nie nazwałbym tego tak!) Nazywa się to po prostu gałęzią zdalnego śledzenia.
Oddziały na zdalnym komputerze:
Możesz wyświetlić wszystkie zdalne gałęzie (czyli gałęzie na zdalnym komputerze), uruchamiając
git remote show <remote>
:To
git remote
polecenie wysyła zapytanie do zdalnego komputera za pośrednictwem sieci o jego gałęzie. Nie aktualizuje oddziałów zdalnego śledzenia na komputerze lokalnym, użyjgit fetch
lubgit pull
do tego.Na wyjściu możesz zobaczyć wszystkie gałęzie, które istnieją na zdalnym komputerze, patrząc pod nagłówkiem „Zdalne gałęzie” (ignoruj wiersze oznaczone jako „nieaktualne”).
Gdybyś mógł zalogować się na zdalnej maszynie i znaleźć repozytorium w systemie plików, mógłbyś rzucić okiem na wszystkie jego gałęzie pod
refs/heads/
.Ściągawka:
Aby bezpiecznie usunąć oddział lokalny, niezależnie od tego, czy śledzą, czy nie:
Aby wymusić usunięcie lokalnego oddziału, niezależnie od tego, czy jest śledzony, czy nie:
Aby usunąć gałąź zdalnego śledzenia:
Aby utworzyć nowy lokalny oddział bez śledzenia:
Aby utworzyć nową lokalną gałąź śledzenia: (Zauważ, że jeśli
<start-point>
jest określony i jest to gałąź zdalnego śledzenia, taka jakorigin/foobar
,--track
flaga jest dołączana automatycznie)Przykład:
Aby usunąć oddział na zdalnym komputerze:
Aby usunąć wszystkie gałęzie zdalnego śledzenia, które są nieaktualne, czyli takie, w których odpowiadające im gałęzie na komputerze zdalnym już nie istnieją:
Można zauważyć, że w niektórych poleceń, należy użyć
<remote>/<branch>
, i inne polecenia,<remote> <branch>
. Przykłady:git branch origin/hello-kitty
igit push --delete origin hello-kitty
.Może się to wydawać arbitralne, ale istnieje prosty sposób na zapamiętanie, kiedy należy użyć ukośnika, a kiedy spacji. Kiedy używasz ukośnika, masz na myśli oddział zdalnego śledzenia na swoim własnym komputerze, podczas gdy gdy używasz spacji, w rzeczywistości masz do czynienia z oddziałem na zdalnym komputerze w sieci.
źródło
Oddział lokalny:
Gałąź na twoim komputerze, w której możesz pracować i dodawać zatwierdzenia. Możesz wymienić te gałęzie z
git branch
.Oddział lokalny (ze śledzeniem):
Zwykły oddział lokalny skonfigurowany tak, aby odpowiadał oddziałowi zdalnemu. Ma to zalety, takie jak możliwość
git pull
igit push
bez konieczności określania repozytorium i nazwy gałęzi. Śledzenie powoduje również, żegit status
Twój oddział jest przed lub za pilotem.Oddział zdalny:
Po prostu oddział w zdalnym repozytorium - zwykle na serwerze, takim jak GitHub itp.
Oddział zdalnego śledzenia:
Lokalna kopia zdalnego oddziału. Ta gałąź nigdy nie powinna być edytowana. Jego celem jest śledzenie aktualnego stanu zdalnego oddziału. Gałęzie zdalnego śledzenia można przeglądać za pomocą
git branch -r
i zazwyczaj wyglądają jakorigin/master
(nazwa repozytorium, po której następuje ukośnik, po którym następuje nazwa gałęzi). Uruchomieniegit fetch
zaktualizuje gałęzie zdalnego śledzenia, aby odzwierciedlić stan odpowiednich gałęzi zdalnych.git branch -avv
jest moim ulubionym narzędziem do wyświetlania szybkiego przeglądu, które gałęzie znajdują się na moim komputerze, które gałęzie są zdalne i najnowsze zatwierdzenie w każdym z nich. W-a
części określa, że wszystkie gałęzie powinny być pokazane (zdalne i lokalne). Nav
końcu oznacza verbose (pokazuje ostatni skrót zatwierdzenia i komunikat). Dzięki @Flimm za wskazanie, że drugav
dodaje informację o tym, który oddział lokalny śledzi który pilot.źródło