Git Fetch: Isang Master Class


Buod: Ang git fetch command ay parang git pull command na nag-a-update sa iyong lokal na repositoryo ng impormasyon at nagko-commit mula sa remote na repository, nang hindi ino-overwrite ang iyong gumaganang mga file.

Hinahayaan ka ng Git fetch na utos na tumingin bago ka tumalon. Maaari mong matuklasan kung anong mga pagbabago ang ginawa sa isang malayuang imbakan, ngunit nang hindi na-overwrite ang iyong mga lokal na file gamit ang mga malalayong file.

Ano ang git fetch, at Ano ang Ginagawa Nito?

Ang command na fetch sa Git ay nag-download ng mga commit, mga file, at iba pang impormasyon mula sa isang malayuang imbakan patungo sa iyong lokal na imbakan, nang ligtas. Gamitin ang fetch kapag gusto mong makita kung anong mga pagbabago ang ginawa ng ibang mga developer, nang hindi napipilitang tanggapin ang mga pagbabago. Ang iyong mga lokal na file ay nananatiling hindi nagalaw. Bakit ito mahalaga?

Kailangan mong panatilihin ang iyong talino tungkol sa iyo kapag nagtatrabaho ka bilang bahagi ng isang development team. Maglalaman ang remote o central repository ng mga pagbabago at mga bagong branch na ginawa at itinulak ng ibang developer sa remote na repository.

Ganap na posible na may nag-update ng malayuang kopya ng mga file na lokal mong binago sa iyong computer. Kung basta-basta kang nagsasagawa ng git pull upang i-update ang iyong lokal na repositoryo, malamang na mahahanap mo sa iyong sarili ang paghawak ng mga merge para sa mga pagbabagong maaaring hindi mo gusto.

Kapag na-download mo na ang impormasyon, maaari mo itong suriin at makita kung ano ang mga pagbabago. Hinahayaan ka nitong gumawa ng matalinong pagpili tungkol sa kung ano ang gusto mong pagsamahin ngayon, kung mayroon man, at kung ano ang gusto mong ipagpaliban hanggang sa ibang pagkakataon.

Git fetch vs. pull

Ang git fetch command ay kumikilos tulad ng git pull command ngunit nang wala ang hakbang na nag-o-overwrite sa iyong mga lokal na file. Ang iyong lokal na repositoryo ay na-update at naka-synchronize, ngunit ang mga pagbabago ay hindi nakasulat sa iyong lokal na repositoryo na gumagana, kaya ang iyong mga file ay mananatiling hindi nagalaw.

O, sa ibang paraan, ang git pull command ay parang git fetch na sinusundan kaagad ng git merge .

I-sync ang Iyong Lokal at Malayong Mga Repositori Gamit ang git fetch

Upang makuha ang lahat ng na-update na metadata at mga commit mula sa isang malayuang imbakan patungo sa iyong lokal na imbakan, gamitin ang command na git fetch na may pangalan o URL ng remote na imbakan. Bilang default, ang unang remote na imbakan ay tinatawag na pinagmulan.

git fetch origin

Maaari mong alisin ang salitang pinagmulan kung nagtatrabaho ka sa isang malayong imbakan.

git fetch

Kinukuha nito ang anumang mga update mula sa repository ng pinagmulan, ngunit hindi nito pinagsasama ang mga pagbabago sa gumaganang mga file. Makikita natin na mayroong bagong sangay, na tinatawag na new-branch, na nakuha para sa atin.

Kapag nagamit mo na ang fetch command, makikita mo ang buong listahan ng mga branch sa remote, sa pamamagitan ng paggamit ng -r (remote) na opsyon kasama ang branch command.

git branch -r

Inililista nito ang lahat ng sangay na alam ng remote, na pagkatapos ng fetch , ay nasa iyong lokal na imbakan din.

Tingnan ang Lahat ng Nakuhang Tag

Katulad nito, maaari mong gamitin ang opsyon na tag (tandaan, ito ay tag na walang s) upang makita ang listahan ng mga tag.

git tag

Mag Dry Run muna

Bagama't hindi pinagsasama ng git fetch ang mga pagbabago sa iyong gumaganang mga file, ina-update pa rin nito ang iyong lokal na repositoryo. Kung gusto mong makita kung anong pagbabago ang gagawin ng command na fetch, nang hindi aktwal na ginagawa ang mga ito, gamitin ang opsyon na --dry-run.

git fetch --dry-run

Paano Kumuha ng Isang Sangay

Ang pagkuha ng impormasyon tungkol sa isang sangay ay madali. Idagdag ang pangalan ng branch sa command line para sabihin sa fetch ang kailangan mo lang malaman tungkol sa isang branch na iyon.

Dito, sinasabi namin sa fetch na kunin ang branch na mary-feature mula sa remote repository na origin.

git fetch origin mary-feature

Ngayon na ang mga detalye at nilalaman ng malayong sangay ay nasa iyong lokal na imbakan, maaari mong gamitin ang git checkout na utos upang lumikha ng bagong sangay at i-checkout ang malayong sangay. Hindi nito i-over-write ang anumang mga umiiral nang file kung ito ang unang pagkakataon na ginamit mo ang branch na ito.

git checkout -b mary-feature origin/mary-feature

Kunin ang Lahat ng Sangay

Kung gumagamit ka ng maraming remote, makakatipid ka ng oras sa pamamagitan ng paghila sa lahat ng pagbabago mula sa lahat ng branch pabalik sa iyong lokal na repository sa pamamagitan ng paggamit sa opsyong --all.

git fetch --all

Paghahambing ng mga Lokal at Malayong Sangay

Upang makita kung paano naiiba ang mga file sa isang malayong sangay sa iyong mga lokal na kopya, gamitin ang git fetch , pagkatapos ay gamitin ang git log na command.

Tandaan na ang lokal at malalayong sangay ay may dalawang tuldok na “..” na naghihiwalay sa kanila. Ipinapakita ng opsyong --oneline ang commit identifier at ang commit message.

git fetch
git log --oneline mary-feature..origin/mary-feature

Ang isang-linya na display ay kapaki-pakinabang kung ang isang sangay ay naglalaman ng napakaraming pagbabago. Upang makakita ng kaunti pang impormasyon, alisin ang --oneline na opsyon.

git log mary-feature..origin/mary-feature

Ipinapakita nito sa amin ang oras at petsa ng bawat commit, kasama ang commit message at ang mga contact details ng change author.

Pag-synchronize ng Lokal na Sangay sa Malayong Sangay

Kung napagpasyahan mo na gusto mong magpatuloy at pagsamahin ang mga pagbabago mula sa malayong sangay patungo sa iyong mga lokal na gumaganang file, maaari mong gamitin ang mga command na ito.

Susuriin namin ang sangay upang matiyak na nagtatrabaho kami na ito ang aming kasalukuyang nagtatrabaho na sangay..

git checkout mary-feature

Ang sangay ay naka-check out para sa amin, at sinabi sa amin na ito ay nasa likod ng malayong bersyon. Maaari naming gamitin ang git pull para i-update ito, pagkatapos ay git status para suriin ang aming status.

git pull
git status

Kung gumawa kami ng ilang pagbabago sa aming mga lokal na file, ipinapaalam sa amin ng Git kapag nag-checkout kami sa sangay na kakailanganin naming magsagawa ng git pull upang magsimula ng pagsasama.

git checkout mary-feature

Ang isang simpleng git pull ay magsisimula sa proseso ng pagkuha ng mga file at pagsasama-sama, o maaari naming sumisid mismo at gamitin ang git merge mismo. Magsisimula kami sa pamamagitan ng pagtiyak na nagtatrabaho kami sa tamang sangay

git checkout mary-feature

Sasabihin namin sa git na pagsamahin ang aming kasalukuyang sangay sa sangay sa malayong repositoryo, mayroong anim na magkakaibang mga commit na kailangang lutasin.

Kailangan nating sabihin sa Git kung aling malayong sangay ang gusto nating pagsamahin.

git merge origin/mary-feature

Nagbubukas ang isang editor upang payagan kaming magbigay ng commit message. Maaari naming tanggapin ang iminungkahing mensahe, o magdagdag ng sarili namin. Ang editor ay ang iyong default na editor maliban kung ang Git ay na-configure na gumamit ng ibang editor.

I-save ang iyong mga pagbabago kapag handa ka nang magpatuloy. Awtomatikong nagpapatuloy ang pagsasanib kapag sarado ang editor.

Naging matagumpay ang aming pagsasanib dahil walang mga salungatan.

Lumilitaw ang mga salungatan kapag ang parehong mga linya ng code ay binago ng dalawa o higit pang mga developer. Kung ganoon ang sitwasyon, minarkahan ng Git ang mga salungatan sa apektadong file. Kakailanganin mong suriin ang mga ito at piliin kung aling pagbabago ang pananatilihin.

Ang Half-Trained Puppy

Katulad ng isang tuta sa pagsasanay, kukunin ng fetch ang hinihiling mo, ngunit hindi nito ibababa. Kung gusto mo talaga ang ipinakita sa iyo ng tuta, kakailanganin mong hilahin.