Eu peguei um repositório, fiz algumas alterações e parece que estraguei tudo.
Desejo iniciá-lo novamente do zero, usando o atual upstream / master como base para o meu trabalho.
Devo refazer o meu repositório ou excluí-lo?
Eu peguei um repositório, fiz algumas alterações e parece que estraguei tudo.
Desejo iniciá-lo novamente do zero, usando o atual upstream / master como base para o meu trabalho.
Devo refazer o meu repositório ou excluí-lo?
Respostas:
A solução mais simples seria (usar ' upstream' como o nome remoto referenciando o repositório original bifurcado):
git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force
(Semelhante a esta página do GitHub, seção "O que devo fazer se estiver em uma situação ruim?" )
Esteja ciente de que você pode perder as alterações feitas na masterramificação (localmente, por causa do reset --hard, e no lado remoto, por causa do push --force).
Uma alternativa seria, se você deseja preservar seus commits master, repeti-los além dos atuais upstream/master.
Substitua a peça de reposição por a git rebase upstream/master. Você ainda precisará forçar o push.
Consulte também " O que devo fazer se estiver em uma situação ruim? "
Uma solução mais completa, fazendo backup do seu trabalho atual (apenas no caso), está detalhada em " Limpeza da ramificação mestre do git e mova algumas confirmações para a nova ramificação ".
Veja também " Puxe novas atualizações do repositório original do GitHub para o repositório bifurcado do GitHub " para ilustrar o que é " upstream".

Nota: repositórios recentes do GitHub protegem o masterramo contra push --force.
Portanto, você terá que se proteger masterprimeiro (veja a figura abaixo) e depois protegê-lo depois de pressionar com força .
Nota: especificamente no GitHub, agora (fevereiro de 2019) existe um atalho para excluir repositórios bifurcados para solicitações pull que foram mescladas a montante.
git reset --hard upstream/master
git resetna resposta.
git remotecomandos " " em stackoverflow.com/a/3903835/6309 .
Amo a resposta do VonC. Aqui está uma versão fácil para iniciantes.
Existe um git remote chamado do originqual tenho certeza de que todos conhecem. Basicamente, você pode adicionar quantos controles remotos forem necessários em um repositório Git. Então, o que podemos fazer é introduzir um novo controle remoto, que é o repositório original e não o garfo. Eu gosto de chamaroriginal
Vamos adicionar repositórios originais ao nosso fork como um controle remoto.
git remote add original https://git-repo/original/original.git
Agora, vamos buscar o repositório original para garantir que tenhamos o código mais recente
git fetch original
Como sugeriu VonC, verifique se estamos no mestre.
git checkout master
Agora, para atualizar nossa bifurcação com o código mais recente no repositório original, tudo o que precisamos fazer é redefinir com força nossa ramificação principal de acordo com o controle remoto original.
git reset --hard original/master
E você está pronto :)
fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.no passo final. Algum conselho?
originalé melhor do que upstream(usado pelos documentos do Github), assim como origin/master"upstream" do local master. Reduz a ambiguidade. Gostaria de saber se é por isso que você o usa?
Seguindo a @VonC ótima resposta. A política da sua empresa GitHub pode não permitir 'forçar push' no mestre.
remote: error: GH003: Sorry, force-pushing to master is not allowed.
Se você receber uma mensagem de erro como esta, tente as seguintes etapas.
Para redefinir efetivamente seu fork, você precisa seguir estas etapas:
git checkout master
git reset --hard upstream/master
git checkout -b tmp_master
git push origin
Abra seu fork no GitHub, em "Configurações -> Ramos -> Ramificação padrão", escolha 'new_master' como o novo ramificação padrão. Agora você pode forçar push no ramo 'master':
git checkout master
git push --force origin
Então você deve definir 'master' como o ramo padrão nas configurações do GitHub. Para excluir 'tmp_master':
git push origin --delete tmp_master
git branch -D tmp_master
Outras respostas que avisam sobre a perda de sua alteração ainda se aplicam, seja cuidadoso.
(Nem todo mundo gosta de fazer coisas através da interface de linha de comando git)
Depois de configurado, você só precisará executar as etapas de 7 a 13 a partir de então.
Buscar> ramo principal do checkout> redefinir para o principal> Enviar alterações ao servidor
Clique duas vezes na sua ramificação "master" para verificá-la, caso ainda não esteja registrada.
Encontre o commit que você deseja redefinir, se você chamou o repositório "master", provavelmente encontrará o commit com a tag "master / master".
Clique com o botão direito do mouse em commit> "Redefinir ramificação atual para este commit".
Na caixa de diálogo, defina o campo "Modo de uso:" como "Descartar todas as alterações na cópia de trabalho" e pressione "OK" (certifique-se de colocar as alterações que não deseja perder em uma ramificação separada primeiro).
Seu Feito!