Git Fetch: Majstrovská trieda
Zhrnutie: Príkaz git fetch je ako príkaz git pull, ktorý aktualizuje váš lokálny archív informáciami a potvrdeniami zo vzdialeného úložiska bez prepísania vašich pracovných súborov.
Príkaz fetch
Git vám umožní pozrieť sa predtým, ako skočíte. Môžete zistiť, aké zmeny boli vykonané vo vzdialenom úložisku, ale bez prepisovania lokálnych súborov vzdialenými súbormi.
Čo je git fetch a čo robí?
Príkaz fetch
v Gite bezpečne stiahne odovzdania, súbory a ďalšie informácie zo vzdialeného úložiska do vášho lokálneho úložiska. Načítanie použite, keď chcete vidieť, aké zmeny vykonali iní vývojári, bez toho, aby ste museli tieto zmeny prijať. Vaše lokálne súbory zostanú nedotknuté. Prečo je to dôležité?
Keď pracujete ako súčasť vývojového tímu, musíte si zachovať rozum. Vzdialené alebo centrálne úložisko bude obsahovať zmeny a nové vetvy, ktoré vytvorili iní vývojári a presunuli do vzdialeného úložiska.
Je celkom možné, že niekto aktualizoval vzdialenú kópiu súborov, ktoré ste upravili lokálne vo svojom počítači. Ak náhodne vykonáte git pull
, aby ste aktualizovali svoj lokálny repozitár, pravdepodobne zistíte, že vykonávate zlučovanie zmien, ktoré by ste možno ani nechceli.
Po stiahnutí informácií ich môžete preskúmať a zistiť, aké sú zmeny. To vám umožní urobiť informovaný výber o tom, čo chcete zlúčiť práve teraz, ak vôbec niečo, a čo chcete odložiť na neskôr.
Git fetch vs. pull
Príkaz git fetch
sa správa ako príkaz git pull
, ale bez kroku, ktorý prepíše vaše lokálne súbory. Vaše lokálne úložisko je aktualizované a synchronizované, ale zmeny sa nezapisujú do pracovného stavu vášho lokálneho úložiska, takže vaše súbory zostanú nedotknuté.
Alebo inak povedané, príkaz git pull
je ako git fetch
, po ktorom bezprostredne nasleduje git merge
.
Synchronizujte svoje lokálne a vzdialené úložiská pomocou git fetch
Ak chcete načítať všetky aktualizované metadáta a potvrdenia zo vzdialeného úložiska do vášho lokálneho úložiska, použite príkaz git fetch
s názvom alebo URL vzdialeného úložiska. V predvolenom nastavení sa prvé vzdialené úložisko nazýva „pôvod“.
git fetch origin
Slovo „pôvod“ môžete vynechať, ak pracujete s jedným vzdialeným úložiskom.
git fetch
To načíta všetky aktualizácie z „pôvodného“ úložiska, ale nezlúči zmeny do pracovných súborov. Vidíme, že existuje nová pobočka s názvom „new-branch“, ktorá bola pre nás obnovená.
Keď použijete príkaz fetch
, môžete si zobraziť úplný zoznam vetiev na diaľkovom ovládači pomocou voľby -r
(vzdialené) s príkazom branch.
git branch -r
Toto uvádza zoznam všetkých vetiev, o ktorých diaľkový ovládač vie a ktoré sa po načítaní
nachádzajú aj vo vašom lokálnom úložisku.
Pozrite si všetky načítané značky
Podobne môžete použiť možnosť tag
(pozn. je to „značka“ bez „s“) na zobrazenie zoznamu značiek.
git tag
Najprv urobte beh nasucho
Hoci git fetch
nezlúči zmeny do vašich pracovných súborov, stále aktualizuje vaše lokálne úložisko. Ak chcete vidieť, aké zmeny vykoná príkaz fetch
bez toho, aby ste ich skutočne vykonali, použite možnosť --dry-run
.
git fetch --dry-run
Ako získať jednu vetvu
Získanie informácií o jednej pobočke je jednoduché. Pridajte názov vetvy do príkazového riadku, aby ste povedali fetch
, že potrebujete vedieť iba o tejto jednej vetve.
Tu hovoríme fetch
, aby načítal vetvu „mary-feature“ zo vzdialeného úložiska „origin“.
git fetch origin mary-feature
Teraz, keď sú podrobnosti a obsah vzdialenej vetvy vo vašom lokálnom úložisku, môžete použiť príkaz git checkout
na vytvorenie novej pobočky a zaplatenie vzdialenej pobočky. Ak túto vetvu používate prvýkrát, neprepíšu sa tým žiadne existujúce súbory.
git checkout -b mary-feature origin/mary-feature
Získajte všetky pobočky
Ak používate viacero diaľkových ovládačov, môžete ušetriť čas stiahnutím všetkých zmien zo všetkých pobočiek späť do lokálneho úložiska pomocou možnosti --all
.
git fetch --all
Porovnanie miestnych a vzdialených pobočiek
Ak chcete zistiť, ako sa súbory vo vzdialenej vetve líšia od vašich lokálnych kópií, použite príkaz git fetch
a potom príkaz git log
.
Všimnite si, že lokálna a vzdialená vetva majú dve bodky „..
“, ktoré ich oddeľujú. Voľba --oneline
zobrazuje identifikátor odovzdania a správu odovzdania.
git fetch
git log --oneline mary-feature..origin/mary-feature
Jednoriadkový displej je užitočný, ak vetva obsahuje veľké množstvo zmien. Ak chcete zobraziť trochu viac informácií, vynechajte možnosť --oneline
.
git log mary-feature..origin/mary-feature
Toto nám ukazuje čas a dátum každého odovzdania spolu so správou odovzdania a kontaktnými údajmi autora zmeny.
Synchronizácia miestnej pobočky so vzdialenou pobočkou
Ak ste sa rozhodli, že chcete pokračovať a zlúčiť zmeny zo vzdialenej vetvy do miestnych pracovných súborov, môžete použiť tieto príkazy.
Pobočku skontrolujeme, aby sme sa uistili, že pracujeme, je to naša súčasná fungujúca pobočka.
git checkout mary-feature
Pobočka je pre nás odhlásená a bolo nám povedané, že je za vzdialenou verziou. Na aktualizáciu môžeme použiť git pull
a potom git status
na kontrolu nášho stavu.
git pull
git status
Ak sme vykonali nejaké zmeny v našich lokálnych súboroch, Git nás pri pokladni vetvy informuje, že na spustenie zlúčenia budeme musieť vykonať git pull
.
git checkout mary-feature
Jednoduchým príkazom git pull
sa spustí proces získania súborov a ich zlúčenia, alebo sa môžeme priamo ponoriť a použiť samotné git merge
. Začneme tým, že sa uistíme, že pracujeme so správnou pobočkou
git checkout mary-feature
Povieme git
, aby zlúčil našu aktuálnu vetvu s vetvou vo vzdialenom úložisku, existuje šesť rôznych potvrdení, ktoré je potrebné vyriešiť.
Musíme Gitu povedať, ktorú vzdialenú vetvu chceme zlúčiť.
git merge origin/mary-feature
Otvorí sa editor, ktorý nám umožní poskytnúť správu o odovzdaní. Môžeme prijať navrhovanú správu alebo pridať vlastnú. Editor je váš predvolený editor, pokiaľ Git nebol nakonfigurovaný na používanie iného editora.
Uložte zmeny, keď budete pripravení pokračovať. Zlučovanie prebieha automaticky po zatvorení editora.
Naše zlúčenie bolo úspešné, pretože nedošlo k žiadnym konfliktom.
Konflikty vznikajú, keď tie isté riadky kódu zmenia dvaja alebo viacerí vývojári. Ak je to tak, Git označí konflikty v dotknutom súbore. Postupne ich budete musieť skontrolovať a vybrať, ktorú zmenu chcete ponechať.
Polovičné trénované šteňa
Rovnako ako šteňa vo výcviku, funkcia aport
aportuje, čo požadujete, ale nezahodí to. Ak skutočne chcete to, čo vám šteniatko ukázalo, budete musieť potiahnuť
.