Existe alguma forma de recuperar apenas um compromisso específico de um reporte Git remoto sem o clonar no meu PC? A estrutura do repo remoto é absolutamente a mesma que a minha e, portanto, há'não há conflitos, mas eu não tenho idéia de como fazer isso e eu não'não quero clonar esse enorme repositório.
Eu sou novo a ir, há alguma maneira?
Você só clona uma vez, então se você já tem um clone do repositório remoto, puxando dele ganhou't faça o download de tudo novamente. Basta indicar que ramo você quer puxar, ou buscar as alterações e fazer o checkout do commit que você quer.
Buscar de um novo repositório é muito barato em largura de banda, pois só vai baixar as mudanças que você não't tem. Pense em termos de Git fazendo a coisa certa, com carga mínima.
Git armazena tudo na pasta `.git'. Um commit can't é buscado e armazenado em isolamento, ele precisa de todos os seus antepassados. Eles são interrelacionados.
Para reduzir o tamanho do download pode no entanto pedir ao git para ir buscar apenas objectos relacionados com um ramo específico ou comprometer-se:
git fetch origin refs/heads/branch:refs/remotes/origin/branch
Isto irá baixar apenas os commits contidos no ramo remoto branch
(e apenas os que você perde), e armazená-lo em origin/branch
. Você pode então fundir ou fazer o checkout.
Você também pode especificar apenas um compromisso SHA1:
git fetch origin 96de5297df870:refs/remotes/origin/foo-commit
Isto irá baixar apenas o commit do SHA-1 96de5297df870 especificado (e seus antepassados que você perde), e armazená-lo como (não existente) ramo remoto `origin/foo-commit'.
Fiz um puxão no meu reporte de idiota:
git pull --rebase <repo> <branch>
Permitindo que o idiota puxasse todo o código para a filial e depois fui fazer um reset para o compromisso que me interessava.
'git reset --hard
Espero que isto ajude.
Você pode simplesmente obter um único commit de um repo remoto com
git fetch <repo> <commit>
onde,
<repo>
pode ser um nome de reporte remoto (por exemplo origin
) ou mesmo um URL de reporte remoto (por exemplo https://git.foo.com/myrepo.git
)<commit>
pode ser o commit SHA1por exemplo
git fetch https://git.foo.com/myrepo.git 0a071603d87e0b89738599c160583a19a6d95545
depois de teres buscado o commit (e os antepassados desaparecidos), podes simplesmente fazer o checkout com
git checkout FETCH_HEAD
Note que isto o trará no " cabeça destacada" estado.