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ť.