git fetch
kommando nedlastinger forplikter, filer, og refs fra en ekstern depotet ditt lokale repo. Henting er hva du gjør når du ønsker å se hva alle andre har jobbet på. Det er lik svn update
i at det kan du se hvordan den sentrale historien har utviklet seg, men det trenger ikke tvinge deg til å faktisk slå sammen endringene i depotet. Git isolater hentet innhold fra eksisterende lokalt innhold; det har absolutt ingen effekt på det lokale utviklingsarbeidet., Hentet innhold må være eksplisitt sjekket ut ved hjelp av git checkout
– kommandoen. Dette gjør du henter en sikker måte til å skrive en anmeldelse begår før å integrere dem med din lokale depotet.
Når du laster ned innhold fra en ekstern repo, git pull
og git fetch
kommandoer som er tilgjengelige for å utføre oppgaven. Du kan vurdere git fetch
‘sikker’ versjon av de to kommandoer. Den vil laste ned den eksterne innhold, men ikke oppdatere din lokale repo ‘ s arbeidsforhold, forlate din nåværende jobb intakt., git pull
er mer aggressive alternativ; det vil laste ned den eksternt innhold for den aktive lokallag og umiddelbart utføre git merge
for å lage en flette forplikte seg for den nye eksternt innhold. Hvis du har ventende endringer i framdrift vil dette føre til konflikter og kick-off merge konfliktløsning flyt.
Hvordan git hente arbeider med ekstern grener
for Å forstå bedre hvordan git fetch
fungerer la oss diskutere hvordan Git organiserer og lagrer forplikter., Bak kulissene, i depotets ./.git/objects
– katalogen, Git lagrer alle forplikter, lokale og eksterne. Git holder eksterne og lokale grenen begår klart atskilte gjennom bruk av grenen refs. Den refs for lokale avdelinger er lagret i ./.git/refs/heads/
. Utfører git branch
– kommandoen vil generere en liste over de lokale grenen refs. Følgende er et eksempel på git branch
utgang med noen demo gren navn.,
git branch
master
feature1
debug2
å Undersøke innholdet av /.git/refs/heads/
katalogen vil avsløre lignende produksjon.
ls ./.git/refs/heads/
master
feature1
debug2
Ekstern grener er akkurat som lokale avdelinger, bortsett fra de kartet for å forplikter seg fra andres depotet. Ekstern grener står ved ekstern de tilhører, slik at du ikke blande dem opp med lokale avdelinger. Som lokale avdelinger, Git har også refs for ekstern grener. Ekstern grenen refs live i ./.git/refs/remotes/
– katalogen., Neste kodebit viser grener du kan se når du henter en ekstern repo beleilig heter remote-repo:
git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature
Denne utgangen viser de lokale avdelingene vi tidligere hadde undersøkt, men nå viser dem innledes med origin/
. I tillegg skal vi nå se det eksterne grener innledes med remote-repo
. Du kan sjekke ut en ekstern grenen akkurat som et lokale, men dette setter deg i en enebolig HEAD
state (akkurat som sjekke ut en gammel commit). Du kan tenke på dem som read-only grener., For å vise den eksterne grener, bare bestå -r
flagget til git branch
– kommandoen.
Du kan inspisere ekstern grener med vanlig git checkout
og git log
kommandoer. Hvis du godkjenner endringene en ekstern grenen inneholder, kan du flette det inn i en lokal gren med en vanlig git merge
. Så, i motsetning til SVN, synkronisering av din lokale depotet med en ekstern depotet er faktisk en to-trinns prosess: hente, og deretter fusjonere. git pull
– kommandoen er en praktisk snarvei til denne prosessen.,
Git hente kommandoer og alternativer
git fetch <remote>
Hent alle grener fra depotet. Dette laster også ned alle de nødvendige forplikter og filer fra den andre depotet.
git fetch <remote> <branch>
Samme som kommandoen ovenfor, men bare hente den angitte gren.
git fetch --all
En kraft flytter noe som henter alle registrerte fjernkontroller og deres grener:
git fetch --dry-run
--dry-run
alternativet vil utføre en demo kjøring av kommandoen., Det vil output eksempler på tiltak vil det ta under henting, men ikke gjelder dem.
git hente en ekstern grenen
følgende eksempel vil vise hvordan å hente en ekstern grenen og oppdatere din lokale arbeidsforhold til den eksterne innholdet. I dette eksempel, la oss anta at det er et sentralt repo opprinnelse fra den lokale depot har blitt klonet fra å bruke git clone
– kommandoen. La oss også anta en ekstra ekstern depotet heter coworkers_repo som inneholder en feature_branch som vi vil konfigurere og hente., Med disse forutsetningene satt la oss fortsette eksempel.
for det Første trenger vi en til å konfigurere den eksterne repo bruke git remote
– kommandoen.
git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git
Her har vi opprettet en referanse til kollega ‘ s repo med repo-URL. Vi vil nå gå som eksternt navn til git fetch
for å laste ned innholdet.
git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch
Vi nå lokalt har innholdet av medarbeidere/feature_branch vi må integrere dette inn i våre lokale arbeidskopi., Vi begynner denne prosessen ved hjelp av git checkout
– kommandoen til kassa nylig nedlastede ekstern grenen.
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>
utgang fra denne kassen drift indikerer at vi er i en enebolig HEAD
staten. Dette er som forventet og betyr at vår HEAD
ref peker til en art som ikke er i rekkefølge med vår lokale historie. Blir som HEAD
er rettet mot medarbeidere/feature_branch ref, kan vi skape en ny lokal gren fra ref., Den ‘frittliggende HEAD
‘ utgang viser oss hvordan vi skal gjøre dette ved hjelp av git checkout
kommando:
git checkout -b local_feature_branch
Her har vi laget en ny lokal gren kalt local_feature_branch. Dette setter oppdateringer HEAD
til å peke på den nyeste eksternt innhold, og vi kan fortsette utviklingen på det fra dette punktet.
Synkronisere opprinnelse med git hente
følgende eksempel går gjennom typiske arbeidsflyt for synkronisering av din lokale depot med det sentrale lageret er master gren.,
git fetch origin
Dette vil vise de grenene som ble lastet ned:
Den forplikter fra disse nye eksterne grener er vist som firkanter i stedet for sirkler i diagrammet nedenfor. Som du kan se, git fetch
gir deg tilgang til hele grenen struktur av et annet oppbevaringssted.,
for Å se hva som begår har blitt lagt til oppstrøms master, kan du kjøre en git log
ved hjelp av opprinnelse/master som et filter:
git log --oneline master..origin/master
for Å godkjenne endringer og flette dem inn i din lokale master gren bruke følgende kommandoer:
git checkout master
git log origin/master
Da kan vi bruke git merge origin/master
:
git merge origin/master
The origin/master og master grener nå peker i samme begå, og du er synkronisert med oppstrøms utviklingen.,
Git hente oppsummering
I anmeldelsen, git fetch
er en primær kommando som brukes til å laste ned innhold fra en ekstern depotet. git fetch
er brukt i forbindelse med git remote
, git branch
, git checkout
, og git reset
for å oppdatere en lokal depotet til staten av en fjernkontroll. git fetch
– kommandoen er en avgjørende del av samarbeidende git arbeidet flyter., git fetch
has similar behavior to git pull
, however, git fetch
can be considered a safer, nondestructive version.