Jaka jest różnica między pull a clone w git?

Jaka jest różnica między robieniem (po mkdir repo a cd repo):

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

I

git clone git://github.com/cmcculloh/repo.git
Oczywiście jeden jest krótszy, ale czy poza tym robią to samo?
 178
Author: YakovL, 2010-09-01

7 answers

Są zasadniczo takie same, z tym, że clone skonfiguruje dodatkowe gałęzie zdalnego śledzenia, a nie tylko master. Sprawdź stronę man :

Klonuje repozytorium do nowo utworzonego katalogu, tworzy gałęzie zdalnego śledzenia dla każdej gałęzi w sklonowanym repozytorium (widoczne przy użyciu git branch-r), a także tworzy i sprawdza początkową gałąź, która jest rozwidlona z aktualnie aktywnej gałęzi sklonowanego repozytorium.

 90
Author: meagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-01 17:51:24

git clone Jak uzyskać lokalną kopię istniejącego repozytorium do pracy. Zwykle jest on używany tylko raz dla danego repozytorium, chyba że chcesz mieć wiele roboczych kopii tego repozytorium. (Lub chcesz uzyskać czystą kopię po zepsuciu lokalnego...)

git pull (lub git fetch + git merge) w ten sposób zaktualizujesz tę lokalną kopię nowymi zatwierdzeniami ze zdalnego repozytorium. Jeśli współpracujesz z innymi, jest to polecenie, które będziesz często uruchamiał.

Jako pierwszy przykład pokazuje, że możliwe jest emulowanie git clone za pomocą szeregu innych komend Gita, ale tak naprawdę nie jest tak, że git pull robi "zasadniczo to samo" co git clone (lub odwrotnie).

 190
Author: ebneter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-02 01:09:11

W języku laików możemy powiedzieć:

  • Clone : Pobierz roboczą kopię zdalnego repozytorium.
  • Pull: pracuję nad tym, proszę o nowe zmiany, które mogą być aktualizowane przez innych.
 86
Author: Jyoti Prakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-17 08:28:34

git clone oznacza, że tworzysz kopię repozytorium w swoim systemie.

git fork oznacza, że kopiujesz repozytorium na swoje konto Github.

git pull oznacza, że pobierasz Ostatnio zmodyfikowane repozytorium.

git push oznacza, że zwracasz repozytorium po jego modyfikacji.

W pojęciu laika:

git clone pobiera i git pull odświeża.

 11
Author: Jee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-13 09:11:23

Clone : kopiowanie zdalnego repozytorium Serwera Na Komputer lokalny.

Pull: pobierz nowe zmiany, które Inne dodały do twojej lokalnej maszyny.

To jest różnica.

Clone jest zwykle używany do uzyskania zdalnej kopii repo.

Pull służy do wyświetlania kodu dodanego przez innych kolegów z drużyny, Jeśli pracujesz w zespołach.

 3
Author: Suman Astani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-13 10:23:03

Hmm, czego brakuje, aby zobaczyć zdalną gałąź "4.2", gdy ciągnę, tak jak robię, gdy klonuję? Coś nie jest identyczne.

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
 1
Author: Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-14 20:57:06

Podczas gdy polecenie git fetch pobierze wszystkie zmiany na serwerze, których jeszcze nie masz, nie zmieni Twojego katalogu roboczego w ogóle. Po prostu zdobędzie dane dla Ciebie i pozwoli Ci je połączyć. Jednak istnieje polecenie o nazwie git pull, które jest zasadniczo git fetch, a następnie git merge w większości przypadków.

Czytaj więcej: https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling

 1
Author: simopr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-13 09:12:04