J'ai besoin de récupérer deux branches Git que j'ai en quelque sorte supprimées lors d'un push.
Ces deux branches ont été créées sur un système différent, puis poussées vers mon dépôt "partagé" (github).
Sur mon système, j'ai (apparemment) récupéré les branches lors d'un fetch :
~/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
Juste après, j'ai fait un push pour envoyer mes changements locaux vers le dépôt central. Pour une raison quelconque, ces branches ont été supprimées à la fois de mon système local et du dépôt 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 git@github.com: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
Il n'est pas très facile d'extraire les branches de leur machine d'origine. J'aimerais donc essayer de les récupérer sur ma machine locale si possible.
Toutes les informations sur l'annulation de git que j'ai trouvées sur Google concernent la récupération de commits perdus. Je ne pense pas que cela s'applique ici, puisque je n'ai pas d'UID de commit pour ces branches.
J'aimerais savoir comment je peux les récupérer. J'aimerais également savoir comment ils ont été supprimés et comment je peux éviter cela à l'avenir.
EDIT : à la demande, voici la configuration de mon repo
user.name=Craig Walker
user.email=github@softcraft.ca
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/*
remote.origin.url=git@github.com: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
0 votes
Il semble que vous ayez une configuration "inhabituelle" ou mal adaptée pour la récupération et la poussée. Que fait
git config -l
pour le référentiel local ?0 votes
C'est tout à fait possible ; je l'ai affiché.
2 votes
Votre
remote.origin.fetch
refspec n'est pas approprié pour être utilisé avecremote.origin.mirror = true
. Voulez-vous faire un miroir ou voulez-vous utiliser le repo GitHub comme une télécommande normale ? Ma réponse devrait contenir les commandes dont vous avez besoin dans les deux cas.0 votes
Je suppose qu'avec le deuxième dépôt, la mise en miroir n'est plus une option (ce qui a probablement causé la suppression en premier lieu).