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 -r
opção. No git, clonar um repositório envolve, bem, clonar todo o repositório e configurá-lo HEAD
para o commit mais recente (a menos que a -n
opçã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.
- Caso 1: eu preciso trabalhar com um commit específico de um submódulo em um repo.
- 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 ZIP
botã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 HEAD
de seu master
para 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 HEAD
de seu new_branch
para 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!