Git – Clonando Commits Específicos

Para uma resposta sobre por que não há clone específico de commit no git, consulte minha pergunta original sobre stackoverflow .

Como você provavelmente sabe, o conceito de clonagem em git é diferente de um checkout svn. Com o svn, posso verificar uma cópia de trabalho de uma revisão específica do repositório usando a -ropção. No git, clonar um repositório envolve, bem, clonar todo o repositório e configurá-lo HEADpara o commit mais recente (a menos que a -nopção seja especificada).

Recentemente, encontrei dois casos de uso em que preciso de commits específicos de repositórios no github que não são meus.

  1. Caso 1: eu preciso trabalhar com um commit específico de um submódulo em um repo.
  2. Caso 2: preciso incluir referência a um commit de um repo dependente em minha documentação.

Aqui estão algumas maneiras de obter um commit específico de um repo.

  • Github Tree View

Se o repo estiver no github, você pode navegar até a visualização em árvore do repo emhttps://github.com/<repo_name>/tree/<commit_sha>

Em seguida, clicar no Download ZIPbotão na barra de navegação à direita fará o download dos códigos desse repo até o commit especificado.

  • Clone o repo e verifique o commit específico

Isso definirá o HEADde seu masterpara apontar commit_sha.

git clone -n <repo_name> 
git checkout
<commit_sha>
  • Clone o repo e verifique o commit específico em uma filial

Isso definirá o HEADde seu new_branchpara apontar commit_sha.

git clone -n <repo_name>
git checkout
-b <new_branch> <commit_sha>

Se você souber de outras maneiras de fazer isso, compartilhe. Obrigado!