Git: Recuperar ramo (remoto) eliminado
Eu preciso recuperar dois ramos do Git que de alguma forma eu deletei durante um push.
Estas duas ramificações foram criadas em um sistema diferente e depois enviadas para o meu repositório "compartilhado" (github).
No meu sistema, eu (aparentemente) recuperei os ramos durante uma busca:
~/myfolder> git fetch
remote: Counting objects: 105, done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 62 (delta 29), reused 0 (delta 0)
Unpacking objects: 100% (62/62), done.
From github.com:mygiturl
* [new branch] contact_page -> origin/contact_page
731d1bb..e8b68cc homepage -> origin/homepage
* [new branch] new_pictures -> origin/new_pictures
Logo depois disso eu fiz um empurrão para enviar minhas alterações locais para o repositório central. Por algum motivo, essas ramificações foram excluídas do meu sistema local e do repositório central:
~/myfolder> git push
Counting objects: 71, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (43/43), done.
Writing objects: 100% (49/49), 4.99 KiB, done.
Total 49 (delta 33), reused 0 (delta 0)
To [email protected]:mygiturl.git
- [deleted] contact_page
+ e8b68cc...731d1bb homepage -> homepage (forced update)
bb7e9f2..e0d061c master -> master
- [deleted] new_pictures
e38ac2e..bb7e9f2 origin/HEAD -> origin/HEAD
731d1bb..e8b68cc origin/homepage -> origin/homepage
e38ac2e..bb7e9f2 origin/master -> origin/master
* [new branch] origin/contact_page -> origin/contact_page
* [new branch] origin/new_pictures -> origin/new_pictures
Não é muito fácil tirar os galhos da máquina de nascimento, então eu gostaria de tentar recuperá-los do meu local, se possível.
Todas as informações do git "undo" que eu pesquisei foram recuperadas com commits perdidos. Eu não acho que se aplica aqui, desde que eu não tenha comido UIDs para esses ramos.
Eu gostaria de saber como posso recuperá-los. Eu também gostaria de saber como eles foram excluídos em primeiro lugar e como posso evitar isso no futuro.
EDIT: por solicitação, aqui está a minha configuração repo
user.name=Craig Walker
[email protected]
alias.unadd=reset HEAD
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
[email protected]:MyGitURL.git
remote.origin.mirror=true
branch.master.remote=origin
branch.master.merge=refs/heads/master
alias.undo=reset --hard
alias.test=push -f ci HEAD:master
alias.st=status
alias.ci=commit
alias.br=branch
alias.co=checkout
alias.ch=checkout
alias.df=diff
alias.lg=log -p
alias.who=shortlog -s --
remote.ci.url=ContinuousIntegrationGitURL
remote.ci.fetch=+refs/heads/*:refs/remotes/ci/*
branch.photo.remote=origin
branch.photo.merge=refs/heads/photos
remote.foo.url=FooGitURL
remote.foo.fetch=+refs/heads/*:refs/remotes/cynthia/*
branch.homepage.remote=origin
branch.homepage.merge=refs/heads/homepage