git hämta

git hämta

kommandot git fetch begår, filer och refs från ett fjärrförråd i din lokala repo. Hämta är vad du gör när du vill se vad alla andra har arbetat med. Det liknar svn update eftersom det låter dig se hur centralhistoriken har utvecklats, men det tvingar dig inte att faktiskt slå samman ändringarna i ditt förråd. Git isolerar hämtat innehåll från befintligt lokalt innehåll; det har absolut ingen effekt på ditt lokala utvecklingsarbete., Hämtat innehåll måste uttryckligen kontrolleras med kommandotgit checkout. Detta gör att hämta ett säkert sätt att granska begår innan integrera dem med din lokala förvaret.

git pull ochgit fetch kommandon är tillgängliga för att utföra uppgiften. Du kan övervägagit fetch den ”säkra” versionen av de två kommandona. Det kommer att ladda ner fjärrinnehållet men inte uppdatera din lokala repo arbetsläge, lämnar ditt nuvarande arbete intakt., git pull är det mer aggressiva alternativet; det kommer att ladda ner fjärrinnehållet för den aktiva lokala filialen och omedelbart köra git merge för att skapa en sammanslagning begå för det nya fjärrinnehållet. Om du har pågående ändringar som pågår kommer detta att orsaka konflikter och starta flödet för konfliktlösning.

hur git hämta fungerar med avlägsna grenar

för att bättre förstå hur git fetch fungerar låt oss diskutera hur Git organiserar och butiker begår., Bakom kulisserna, i förvaret ./.git/objects katalog, git lagrar alla begår, lokala och fjärr. Git håller avlägsna och lokala gren förbinder sig tydligt separat genom användning av gren refs. Refs för lokala grenar lagras i ./.git/refs/heads/. Exekvering av kommandotgit branch kommer att mata ut en lista över de lokala grenreferna. Följande är ett exempel på git branch – utmatning med några demo-grennamn.,

git branch
master
feature1
debug2

undersöka innehållet i katalogen/.git/refs/heads/ skulle avslöja liknande utdata.

ls ./.git/refs/heads/
master
feature1
debug2

fjärr grenar är precis som lokala grenar, förutom att de karta för att begå från någon annans arkiv. Avlägsna grenar prefixeras av fjärrkontrollen de tillhör så att du inte blandar dem med lokala grenar. Liksom lokala grenar har Git också refs för avlägsna grenar. Remote branch refs bor i katalogen ./.git/refs/remotes/., Nästa exempelkodavsnitt visar de grenar du kan se efter att ha hämtat en fjärrrepo som heter remote-repo:

git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature

den här utmatningen visar de lokala grenarna vi tidigare hade undersökt men visar dem nu prefixerade med origin/. Dessutom ser vi nu de avlägsna grenarna prefixerade med remote-repo. Du kan kolla in en avlägsen gren precis som en lokal, men detta sätter dig i en friståendeHEAD tillstånd (precis som att kolla in en gammal commit). Du kan tänka på dem som skrivskyddade grenar., För att visa dina fjärrgrenar, skicka bara-r – flaggan till kommandotgit branch.

Du kan inspektera fjärrgrenar med de vanligagit checkout ochgit log – kommandona. Om du godkänner ändringarna som en fjärr-gren innehåller kan du slå samman den i en lokal gren med en normal git merge. Så, till skillnad från SVN, är synkronisering av ditt lokala förråd med ett fjärrförråd faktiskt en tvåstegsprocess: hämta och slå sedan samman. Kommandotgit pull är en lämplig genväg för denna process.,

Git hämta kommandon och alternativ

git fetch <remote>

hämta alla grenar från förvaret. Detta hämtar också alla nödvändiga åtaganden och filer från det andra förvaret.

git fetch <remote> <branch>

samma som ovanstående kommando, men hämta endast den angivna grenen.

git fetch --all

ett kraftdrag som hämtar alla registrerade fjärrkontroller och deras filialer:

git fetch --dry-run

alternativet--dry-run kommer att utföra en demokörning av kommandot., Det kommer att ge exempel på åtgärder som det kommer att ta under hämtningen men inte tillämpa dem.

git hämta en fjärr gren

följande exempel visar hur du hämtar en fjärr gren och uppdatera din lokala arbetsstatus till fjärrinnehållet. I det här exemplet antar vi att det finns ett centralt repo-ursprung från vilket det lokala arkivet har klonats från att använda kommandot git clone. Låt oss också anta en ytterligare fjärrförvar som heter coworkers_repo som innehåller en feature_branch som vi kommer att konfigurera och hämta., Med dessa antaganden set låt oss fortsätta exemplet.

För det första måste vi konfigurera fjärrrepoen med kommandot git remote.

git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git

Här har vi skapat en referens till medarbetare repo med repo URL. Vi kommer nu att skicka det fjärrnamnet till git fetch för att ladda ner innehållet.

git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch

Vi har nu lokalt innehållet i medarbetare/feature_branch vi behöver integrera detta i vår lokala arbetskopia., Vi börjar denna process genom att använda kommandot git checkout för att checka ut den nyligen nedladdade fjärrgrenen.

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>

utgången från denna checkout-operation indikerar att vi befinner oss i ett fristående tillståndHEAD. Detta förväntas och innebär att vårHEAD ref pekar på en ref som inte är i sekvens med vår lokala historia. EftersomHEAD pekas på medarbetare/feature_branch ref, kan vi skapa en ny lokal gren från den ref., Utmatningen’ detached HEAD’ visar oss hur vi gör detta med kommandotgit checkout:

git checkout -b local_feature_branch

Här har vi skapat en ny lokal gren som heter local_feature_branch. Detta sätter uppdateringar HEAD för att peka på det senaste fjärrinnehållet och vi kan fortsätta utvecklingen på det från den här tiden.

synkronisera ursprung med git hämta

följande exempel går igenom den typiska arbetsflödet för att synkronisera din lokala förvaret med den centrala förvaret Huvud gren.,

git fetch origin

detta kommer att visa de grenar som hämtades:

åtagandena från dessa nya fjärrgrenar visas som kvadrater istället för cirklar i diagrammet nedan. Som du kan se ger git fetch dig tillgång till hela grenstrukturen i ett annat arkiv.,

för att se vad som har lagts till i uppströmsmästaren kan du köra engit log med ursprung/master som filter:

git log --oneline master..origin/master

för att godkänna ändringarna och slå samman dem i din lokala huvudgren använd följande kommandon:

git checkout master
git log origin/master

då kan vi användagit merge origin/master:

git merge origin/master

ursprungs – / Master-och huvudgrenarna pekar nu på samma åtagande, och du synkroniseras med uppströmsutvecklingen.,

git fetch summary

i granskning ärgit fetch ett primärt kommando som används för att ladda ner innehåll från ett fjärrförråd. git fetch används tillsammans med git remote, git branch, git checkout, och git reset för att uppdatera ett lokalt arkiv till tillståndet för en fjärrkontroll. Kommandotgit fetch är en kritisk del av samverkande git-arbetsflöden., git fetch has similar behavior to git pull, however, git fetch can be considered a safer, nondestructive version.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *