Meu github tem 100 confirmações no momento. Preciso reverter o repositório para confirmar 80 e remover todos os subsequentes.
Por quê? Esse repositório deve ser usado para mesclar usuários diversos. Um monte de fusões foram confirmadas por mim, devido à edição excessiva. Isso ocorreu devido a uma identificação incorreta de minhas ramificações remotas, onde três desenvolvedores foram rotulados entre si. Preciso redefinir para esse ponto e, em seguida, puxar para frente.
Eu queria refazer a recuperação, como neste exemplo: Como remover uma confirmação no GitHub?
No entanto, o git quer que eu faça muita gestão de conflitos. Existe uma maneira mais simples?
git push -f origin branch
. Só tive um mau momento, porque senti falta disso.git push origin HEAD --force
, em vez degit push -f origin branch
como isso estava me dando umerror: src refspec branch does not match any.
erroPara desfazer o commit mais recente, faço o seguinte:
Primeiro:
obtenha o ID mais recente do SHA para desfazer.
Isso criará um novo commit que faz exatamente o oposto do seu commit. Em seguida, você pode enviar esse novo commit para levar seu aplicativo ao estado em que estava antes, e seu histórico do git mostrará essas alterações de acordo.
Isso é bom para refazer imediatamente algo que você acabou de cometer, o que eu acho que é mais frequente para mim.
Como Mike mencionou, você também pode fazer isso:
fonte
git revert HEAD
reverterá o último commit sem precisar procurar o hash.Outra maneira:
Faça o checkout da filial que você deseja reverter e, em seguida, redefina sua cópia de trabalho local de volta para a confirmação de que você deseja ser a mais recente no servidor remoto (tudo depois que ela se despedir). Para fazer isso, no SourceTree, cliquei com o botão direito do mouse e selecionei "Redefinir BRANCHNAME para este commit".
Em seguida, navegue até o diretório local do seu repositório e execute este comando:
Isso apagará todas as confirmações após a atual no seu repositório local, mas apenas para essa ramificação.
fonte
A maioria das sugestões pressupõe que você precisa destruir de alguma forma os últimos 20 commits, e é por isso que significa "reescrever o histórico", mas você não precisa.
Basta criar um novo ramo a partir do commit # 80 e trabalhar nesse ramo daqui para frente. Os outros 20 commits permanecerão no antigo ramo órfão.
Se você deseja absolutamente que seu novo ramo tenha o mesmo nome, lembre-se de que o ramo é basicamente apenas rótulos. Apenas renomeie sua ramificação antiga para outra coisa e crie a nova ramificação no commit # 80 com o nome que você deseja.
fonte
Ao fazer atualizações de ramificação a partir do mestre, percebo que às vezes clico demais e faço com que a ramificação se mescle também ao mestre. Encontrei uma maneira de desfazer isso.
Se o seu último commit foi uma mesclagem, é necessário um pouco mais de amor:
git revert -m 1 HEAD
fonte
No github, a maneira mais fácil é excluir a ramificação remota na interface do usuário do github, na guia Ramificações. Você precisa remover as seguintes configurações para excluir a ramificação:
Agora, recrie-o em seu repositório local para apontar para o ponto de confirmação anterior. e adicione-o novamente ao repositório remoto.
Em seguida, empurre a ramificação local para o controle remoto
Adicione novamente a proteção padrão de ramificação e ramificação, etc.
fonte