Eu sei como reverter para commits mais antigos em um branch Git, mas como faço para reverter para o estado de um branch ditado por uma tag? Eu imagino algo assim:
Você quer "retroceder o branch" (ou seja, remover commits), ou adicionar um novo commit ao branch atual, que configure o branch de forma que todos os arquivos sejam "da maneira que estavam no commit dado por aquela tag"?
Torek de
Ambos devem terminar o trabalho, embora eu prefira adicionar um novo commit ao branch atual da maneira que você descreve
zachd1_618
Nesse caso, use o git checkout <id> .método desta resposta .
rasgou em
Respostas:
133
As tags Git são apenas ponteiros para o commit. Então você os usa da mesma maneira que você faz HEAD, nomes de branch ou commit sha hashes. Você pode usar tags com qualquer comando git que aceite argumentos de confirmação / revisão. Você pode tentar com git rev-parse tagnamepara exibir o commit para o qual aponta.
No seu caso, você tem pelo menos estas duas alternativas:
Redefina o branch atual para uma tag específica:
git reset --hard tagname
Gere o commit de reversão no topo para chegar ao estado da tag:
git revert tag
Isso pode introduzir alguns conflitos se você tiver commits de mesclagem.
Como @Matt disse, a resposta aceita é simplesmente incorreta, pois apenas reverte as mudanças no commit marcado. Sua melhor aposta é usar hashes de commit e siga esta resposta: stackoverflow.com/a/4114122/6348485
Swagga Ting
Olá, você poderia explicar "gerar confirmação de reversão no topo para levá-lo ao estado da tag:"? Não tenho ideia do que isso significa, infelizmente.
Tentei a solução aceita, mas obtive um erro, warning: refname '<tagname>' is ambiguous'
Mas, como afirma a resposta, as tags se comportam como um ponteiro para um commit, então como você faria com um hash de commit, você pode simplesmente verificar a tag. A única diferença é que você o inicia com tags/:
git checkout <id> .
método desta resposta .Respostas:
As tags Git são apenas ponteiros para o commit. Então você os usa da mesma maneira que você faz HEAD, nomes de branch ou commit sha hashes. Você pode usar tags com qualquer comando git que aceite argumentos de confirmação / revisão. Você pode tentar com
git rev-parse tagname
para exibir o commit para o qual aponta.No seu caso, você tem pelo menos estas duas alternativas:
Redefina o branch atual para uma tag específica:
Gere o commit de reversão no topo para chegar ao estado da tag:
Isso pode introduzir alguns conflitos se você tiver commits de mesclagem.
fonte
Use git reset :
(assumindo que a string especificada é a tag).
fonte
Você pode usar o git checkout.
Tentei a solução aceita, mas obtive um erro,
warning: refname '<tagname>' is ambiguous'
Mas, como afirma a resposta, as tags se comportam como um ponteiro para um commit, então como você faria com um hash de commit, você pode simplesmente verificar a tag. A única diferença é que você o inicia com
tags/
:git checkout tags/<tagname>
fonte