ti-enxame.com

Qual é a diferença entre puxar e clonar no git?

Qual é a diferença entre fazer (depois de mkdir repo e cd repo):

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

e

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

Quero dizer, obviamente, um é mais curto, mas além disso eles estão basicamente fazendo a mesma coisa?

198
cmcculloh

Eles são basicamente os mesmos, exceto que o clone irá configurar ramificações adicionais de rastreamento remoto, não apenas master. Confira o man page :

Clona um repositório em um diretório recém-criado, cria ramificações de rastreamento remoto para cada ramificação no repositório clonado (visível usando git branch -r) e cria e faz check-out de uma ramificação inicial que é bifurcada da ramificação atualmente ativa do repositório clonado.

103
meagar

git clone é como você obtém uma cópia local de um repositório existente para trabalhar. Normalmente, ele é usado apenas uma vez para um determinado repositório, a menos que você queira ter várias cópias em funcionamento dele. (Ou queira obter uma cópia limpa depois de estragar o seu local ...)

git pull (ou git fetch + git merge) é como você atualiza essa cópia local com novos commits do repositório remoto. Se você está colaborando com outras pessoas, é um comando que você executará com frequência.

Como seu primeiro exemplo mostra, é possível emular git clone com uma variedade de outros comandos git, mas não é realmente o caso que git pull está fazendo "basicamente a mesma coisa" que git clone (ou vice-versa).

214
ebneter

Na linguagem dos leigos podemos dizer:

  • Clone: Obtenha uma cópia de trabalho do repositório remoto.
  • Pull: Eu estou trabalhando nisso, por favor, me dê as novas alterações que podem ser atualizadas por outras pessoas.
99
Jyoti Prakash

git clone significa que você está fazendo uma cópia do repositório em seu sistema.

git fork significa que você está copiando o repositório para sua conta do Github.

git pull significa que você está buscando o último repositório modificado.

git Push significa que você está retornando o repositório depois de modificá-lo.

No termo de leigo:

git clone está sendo baixado e git pull é refrescante.

25
user7909000

clone: copiando o repositório do servidor remoto para sua máquina local.

puxar: obter novas alterações outras adicionadas à sua máquina local.

Essa é a diferença.

Clone é geralmente usado para obter cópia do repositório remoto.

Pull é usado para ver o código adicionado de outros companheiros de equipe, se você estiver trabalhando em equipes.

8
Suman Astani

git clone é usado apenas para baixar exatamente o que está atualmente trabalhando no repositório do servidor remoto e salvá-lo na pasta de sua máquina onde o projeto está localizado. Principalmente é usado somente quando vamos carregar o projeto pela primeira vez. Depois disso, puxar é a melhor opção.

git pull é basicamente uma operação (clone (download) + merge) e usada principalmente quando você está trabalhando em equipe. Em outras palavras, quando você quer as mudanças recentes nesse projeto, você pode puxar.

3
Raman_1059

Hmm, o que está faltando para ver o ramo remoto "4.2" quando eu puxo, como faço quando clonei? Algo claramente não é idêntico.

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
2
Scott

Embora o comando git fetch busque todas as alterações no servidor que você ainda não tem, ele não modificará seu diretório de trabalho. Ele simplesmente obterá os dados para você e permitirá que você mescle você mesmo. No entanto, existe um comando chamado git pull que é essencialmente um git fetch imediatamente seguido por git merge na maioria dos casos.

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

1
simopr

git clone URL ---> O projeto completo ou repositório será baixado como um diretório separado. e não apenas as mudanças git pull URL ---> fetch + merge -> Ele só vai buscar as mudanças que foram feitas e não o projeto inteiro

0
Md Abrar