git fetch
příkaz popularita zavazuje, soubory, a rozhodčí ze vzdáleného úložiště do místního repo. Načítání je to, co děláte, když chcete vidět, na čem všichni ostatní pracují. Je to podobné svn update
v tom, že vám umožní vidět, jak centrální historie pokročila, ale nenutí vás skutečně sloučit změny do úložiště. Git izoluje načtený obsah od stávajícího místního obsahu; nemá absolutně žádný vliv na vaši místní rozvojovou práci., Načtený obsah musí být explicitně odhlášen pomocí příkazu git checkout
. Díky tomu je načítání bezpečného způsobu revize revizí před jejich integrací do místního úložiště.
při stahování obsahu ze vzdáleného repo jsou k dispozici příkazygit pull
agit fetch
. Můžete zvážit git fetch
„bezpečná“ verze obou příkazů. Stáhne vzdálený obsah, ale neaktualizuje pracovní stav místního repa a ponechá vaši aktuální práci neporušenou., git pull
je více agresivní alternativa; to bude stahovat vzdálený obsah pro aktivní místní pobočky a okamžitě provést git merge
vytvořit merge commit pro nové vzdáleného obsahu. Pokud čekáte na probíhající změny, způsobí to konflikty a odstartuje tok řešení konfliktů sloučení.
Jak git fetch podporuje vzdálené větve
Pro lepší pochopení, jak git fetch
funguje, pojďme diskutovat o tom, jak Git organizuje a ukládá zavazuje., V zákulisí, v adresáři ./.git/objects
, git ukládá všechny commity, místní a vzdálené. Git udržuje vzdálené a místní větev se zřetelně oddělí pomocí větve refs. Refs pro místní pobočky jsou uloženy v ./.git/refs/heads/
. Spuštění příkazu git branch
zobrazí seznam refs místní větve. Následuje příklad výstupu git branch
s některými názvy demo větví.,
git branch
master
feature1
debug2
zkoumání obsahu /.git/refs/heads/
by odhalilo podobný výstup.
ls ./.git/refs/heads/
master
feature1
debug2
vzdálené větve jsou stejně jako místní větve, kromě toho, že mapují commity z úložiště někoho jiného. Vzdálené větve jsou označeny pomocí dálkového patří, takže nemusíte míchat s místními pobočkami. Stejně jako místní pobočky má Git také refs pro vzdálené pobočky. Vzdálená větev refs žije v adresáři ./.git/refs/remotes/
., Následující příklad kódu ukazuje, větve můžete vidět po načtení vzdáleného repo pohodlně s názvem remote-repo:
git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature
Tento výstup zobrazuje místní pobočky jsme již dříve zkoumáno, ale nyní zobrazuje je s předponou origin/
. Kromě toho nyní vidíme vzdálené větve s předponou remote-repo
. Můžete se podívat na vzdálené pobočky, stejně jako místní, ale to vám dává v samostatně stojící HEAD
stát (stejně jako mimo kontrolu staré commit). Můžete je považovat za větve pouze pro čtení., Chcete-li zobrazit vzdálené větve, jednoduše předejte příznak -r
příkazu git branch
.
vzdálené větve můžete kontrolovat pomocí obvyklých příkazů git checkout
a git log
. Pokud schválíte změny, které vzdálená větev obsahuje, můžete je sloučit do místní větve s normálním git merge
. Na rozdíl od SVN je tedy synchronizace místního úložiště se vzdáleným úložištěm ve skutečnosti dvoufázovým procesem: načtení a sloučení. Příkaz git pull
je vhodnou zkratkou pro tento proces.,
Git fetch příkazy a možnosti
git fetch <remote>
Načíst všechny větve z repository. To také stáhne všechny požadované revize a soubory z druhého úložiště.
git fetch <remote> <branch>
stejný jako výše uvedený příkaz, ale načíst pouze zadanou větev.
git fetch --all
power pohyb, který načte všechny registrované dálkové ovladače a jejich větví:
git fetch --dry-run
--dry-run
možnost provádět demo spustit příkazu., Zobrazí příklady akcí, které bude trvat během načtení, ale nepoužije je.
git načíst vzdálenou větev
následující příklad ukáže, jak načíst vzdálenou větev a aktualizovat místní pracovní stav na vzdálený obsah. V tomto příkladu předpokládejme, že existuje centrální repo původu, z nichž místní úložiště byl klonován z používání git clone
příkaz. Předpokládejme také další vzdálené úložiště s názvem coworkers_repo, které obsahuje feature_branch, který nakonfigurujeme a načteme., S těmito stanovenými předpoklady pokračujme v příkladu.
Nejprve budeme muset nakonfigurovat vzdálené repo pomocí příkazu git remote
.
git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git
zde jsme vytvořili odkaz na repo spolupracovníka pomocí repo URL. Nyní tento vzdálený název předáme git fetch
pro stažení obsahu.
git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch
Jsme nyní lokálně mají obsah spolupracovníky/feature_branch budeme potřebovat integrovat do naší místní pracovní kopie., Tento proces zahájíme pomocí příkazu git checkout
k pokladně nově stažené vzdálené větve.
git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
výstup z této pokladní operace, naznačuje, že jsme v rodinném HEAD
státu. Očekává se, že a znamená, že naše HEAD
ref ukazuje na ref, který není v pořadí s naší místní historie. HEAD
je ukázal na spolupracovníky/feature_branch ref, můžeme vytvořit nové místní pobočky z ref., ‚Samostatná budova HEAD
‚ výstup nám ukazuje, jak to udělat pomocí git checkout
příkaz:
git checkout -b local_feature_branch
Zde jsme vytvořili nové místní pobočky jménem local_feature_branch. Tím se aktualizace HEAD
ukazují na nejnovější vzdálený obsah a od tohoto okamžiku můžeme pokračovat ve vývoji.
synchronizace původu s GIT fetch
následující příklad prochází typickým pracovním postupem pro synchronizaci místního úložiště s hlavní větví centrálního úložiště.,
git fetch origin
Toto se zobrazí větve, které byly staženy:
zavazuje, ze tyto nové vzdálené větve jsou zobrazeny jako čtverečky místo kruhů v diagramu níže. Jak můžete vidět, git fetch
vám umožní přístup k celé struktuře větve jiného úložiště.,
Aby viděli, co se dopustí byly přidány do nadřazeného master, můžete spustit git log
pomocí origin/master jako filtr:
git log --oneline master..origin/master
schválit změny a sloučit je do své lokální hlavní větev, použijte následující příkazy:
git checkout master
git log origin/master
Pak můžeme použít git merge origin/master
:
git merge origin/master
origin/master a master větve nyní poukazují na stejné spáchat, a ty jsou synchronizované s předcházejícím vývojem.,
git fetch summary
in review, git fetch
je primární příkaz používaný ke stažení obsahu ze vzdáleného úložiště. git fetch
se používá ve spojení s git remote
git branch
git checkout
git reset
aktualizovat místní úložiště do stavu dálkového ovládání. Příkaz git fetch
je kritickým dílem kolaborativních pracovních toků git., git fetch
has similar behavior to git pull
, however, git fetch
can be considered a safer, nondestructive version.