Wat is het verschil tussen pull en clone in git?

Wat is het verschil tussen doen (na mkdir repoen cd repo):

git init
git remote add origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull origin master

en

git clone git://github.com/cmcculloh/repo.git

Ik bedoel, één is natuurlijk korter, maar verder doen ze eigenlijk hetzelfde?


Antwoord 1, autoriteit 100%

Ze zijn in principe hetzelfde, behalve dat clone extra remote tracking branches zal opzetten, niet alleen master. Bekijk de man-pagina:

Kloont een repository in een nieuw aangemaakte directory, maakt remote-tracking branches aan voor elke branch in de gekloonde repository (zichtbaar met git branch -r), en maakt en checkt een initiële branch die is gevorkt van de momenteel actieve vertakking van de gekloonde repository filiaal.


Antwoord 2, autoriteit 94%

git cloneis hoe je een lokale kopie van een bestaande repository krijgt om aan te werken. Het wordt meestal maar één keer gebruikt voor een bepaalde repository, tenzij je er meerdere werkende exemplaren van wilt hebben. (Of wil je een schone kopie krijgen nadat je je lokale exemplaar hebt verknoeid…)

git pull(of git fetch+ git merge) is hoe je die lokale kopie bijwerktmet nieuwe commits van de externe repository. Als u met anderen samenwerkt, is dit een opdracht die u vaak zult uitvoeren.

Zoals je eerste voorbeeld laat zien, is het mogelijk om git clonete emuleren met een assortiment van andere git-commando’s, maar het is niet echt zo dat git pulldoet ” eigenlijk hetzelfde” als git clone(of omgekeerd).


Antwoord 3, autoriteit 99%

In lekentaal kunnen we zeggen:

  • Klonen: verkrijg een werkkopie van de externe repository.
  • Pull: ik werk hieraan, geef me de nieuwe wijzigingen die door anderen kunnen worden bijgewerkt.

Antwoord 4, autoriteit 45%

git clonebetekent dat je een kopie maakt van de repository in je systeem.

git forkbetekent dat je de repository naar je Github-account kopieert.

git pullbetekent dat je de laatst gewijzigde repository ophaalt.

git pushbetekent dat je de repository terugstuurt nadat je deze hebt gewijzigd.

In lekentaal:

git clonewordt gedownload en git pullwordt vernieuwd.


Antwoord 5, autoriteit 13%

Miss Clone: ik krijg een nieuwe kopie voor lokaal.

Meneer Pull: ik heb het al lokaal, ik werk het alleen bij.


Miss Clone: Ik kan wat jij doet! Jij bent gewoon mijn subset.

Meneer Pull: Idem!


Miss Clone: Nee, u maakt niet aan. Dit is wat ik doe:

  1. Maak een lege lege repository op de lokale computer.
  2. Vertakkingen voor het op afstand volgen vullen (alle vertakkingen in repo gedownload naar lokale computer)
  3. Voer git fetch uit zonder argumenten

Je doet alleen #3, en dan merge je, wat ik niet hoef te doen (de mijne is vers).

Mr Pull: Slimme broek, geen probleem, ik zal eerst een “git init” doen! Dan zijn we hetzelfde.


Miss Clone: Nee schat, heb je geen ‘uitgecheckte branch’ nodig… de git checkout? Wie zal het doen? ik!

Meneer Pull: Oh ja, dat is nodig. Ik heb een standaardbranch nodig om op te reageren. Maar Maar
Ik heb de extra ‘samenvoeg’-mogelijkheid op bestaande repo! Dat maakt mij het meest gebruikte commando in Git 😉


Git-makers: houd uw paarden vast, meneer Pull, als –bare of –mirror wordt gebruikt met kloon of init, zal uw samenvoeging niet plaatsvinden. Het blijft alleen-lezen. En voor jou, mevrouw Clone, kan git checkoutworden vervangen door een git fetch <remote> <srcBranch>:<destBranch>tenzij u een -s <strategy>met pull wilt gebruiken die ontbreekt in fetch.


Miss Clone: Op de een of andere manier voel ik me al een winnaar, maar laat me dit ook laten vallen: mijn opdracht is van toepassing op alle branches in de repository. Ben jij die ruimdenkende meneer Pull?

Dhr. Pull: Ik ben ruimdenkend als het gaat om het ophalen van alle branchenamen uit de repo. Omdat ik niet graag onnodige takken haal. Maar de merge zal alleen plaatsvinden op de huidige uitgecheckte branch. Exclusiviteit is de naam! En ook in uw geval rekent u maar bij één filiaal af.

Git-makers: slechts één toevoeging: git clone --single-branch --branch <branch name> <url>, ja Miss Clone kan worden beperkt tot slechts één tak.


Antwoord 6, autoriteit 8%

kloon: de externe serverrepository kopiëren naar uw lokale computer.

pull: haal nieuwe wijzigingen op die andere aan uw lokale computer hebben toegevoegd.

Dit is het verschil.

Klonen wordt over het algemeen gebruikt om een externe repo-kopie te krijgen.

Pull wordt gebruikt om de toegevoegde code van andere teamgenoten te bekijken, als je in teams werkt.


Antwoord 7, autoriteit 4%

git clonewordt gebruikt om precies te downloaden wat momenteel werkt op de externe serverrepository en het op te slaan in de map van uw machine waar dat project is geplaatst.
Meestal wordt het alleen gebruikt wanneer we het project voor de eerste keer gaan uploaden. Daarna is trekken de betere optie.

git pullis in feite een (kloon (download) + samenvoegen) bewerking en wordt meestal gebruikt als je als teamwerk werkt. Met andere woorden, wanneer u de recente wijzigingen in dat project wilt, kunt u trekken.


Antwoord 8

Hmm, wat ontbreekt er om de remote branch “4.2” te zien wanneer ik trek, zoals ik doe wanneer ik kloon? Er is duidelijk iets niet identiek.

tmp$  mkdir some_repo
tmp$  cd some_repo
some_repo$  git init
Initialized empty Git repository in /tmp/some_repo/.git/
some_repo$  git pull https://github.ourplace.net/babelfish/some_repo.git
  :
From https://github.ourplace.net/babelfish/some_repo
 * branch            HEAD       -> FETCH_HEAD
some_repo$  git branch
* master

vs

tmp$  rm -rf some_repo
tmp$  git clone https://github.ourplace.net/babelfish/some_repo.git
Cloning into 'some_repo'...
  :
Checking connectivity... done.
tmp$  cd some_repo
some_repo$  git branch
* 4.2

Antwoord 9

Terwijl het git fetchcommando alle wijzigingen op de server zal ophalen die je nog niet hebt, zal het je werkdirectory helemaal niet wijzigen. Het zal eenvoudig de gegevens voor u ophalen en u het zelf laten samenvoegen. Er is echter een commando genaamd git pulldat in de meeste gevallen een git fetchis, onmiddellijk gevolgd door een git merge.

Lees meer: https://git- scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling


Antwoord 10

git kloon-URL —> Het volledige project of de repository wordt gedownload als een aparte map. en niet alleen de veranderingen
git pull-URL —> ophalen + samenvoegen –> Het haalt alleen de wijzigingen op die zijn aangebracht en niet het hele project


Antwoord 11

Clone-: het maakt een exacte kopie van uw externe repository-project op uw lokale computer.

Pull-: stel dat twee of meer dan twee mensen dezelfde repository delen.
(Stel dat een andere persoon Syam heet)
(Een repository is een plaats waar je project in Github bestaat) Dus als Syam wat veranderingen aanbrengt in hetzelfde project in zijn lokale en het naar de externe repository pusht. Dus wat de veranderingen die Syam ook deed, die veranderingen zullen niet worden weerspiegeld in je lokale. Dus om die nieuwe veranderingen in je local weer te geven, moet je git pull gebruiken. Over het algemeen gebruiken we git pull om het project bij te werken.

Dus eigenlijk gebruiken we git clone maar één keer, terwijl we git pull vaak gebruiken.


Antwoord 12

git clone <remote-url><=>

  • maak een nieuwe map
  • git init// init nieuwe repository
  • git remote add origin <remote-url>// remote toevoegen
  • git fetch// haal alle remote branches op
  • git switch <default_branch>// switch naar de standaard branch

git pull<=>

  • haal ALLE externe vertakkingen op
  • HUIDIGE lokale vertakking samenvoegen met externe vertakking volgen (geen andere vertakking) (als lokale vertakking bestond)

git pull <remote> <branch><=>

  • haal de vertakking op afstand
  • voeg de HUIDIGE lokale vertakking samen met de vertakking op afstand (als de lokale vertakking bestond)

Other episodes