web-dev-qa-db-fra.com

Git - Pouvons-nous récupérer les commits supprimés?

Je suis surpris, je ne pouvais pas trouver la réponse à cette question sur SO.

Peut-on récupérer/restaurer les commits supprimés dans git?

Par exemple, voici ce que j'ai fait:

# Remove the last commit from my local branch
$ git reset --hard HEAD~1

# Force Push the delete
$ git Push --force

Maintenant, y a-t-il un moyen de récupérer le commit qui a été supprimé? Est-ce que git enregistre (enregistre) la suppression en interne?

47
Atri

Pour revenir à ce commit, vous pouvez utiliser le reflog pour regarder son ref.

Les journaux de référence, ou "reflogs", indiquent le moment où les astuces des branches et autres références ont été mises à jour dans le référentiel local.

Exécutez cette commande:

git reflog

Analysez les premières entrées et trouvez le commit qui a été perdu. Gardez une trace de l'identifiant de cette validation (vous pouvez utiliser la première ou la deuxième colonne). Appelons l'identifiant "ID".

Si vous n'avez pas effectué de travail supplémentaire depuis la réinitialisation - hard, vous pouvez effectuer les tâches suivantes:

git reset --hard ID
git Push -f Origin master

Si vous avez effectué un autre travail depuis la réinitialisation, vous pouvez sélectionner à nouveau si vous revenez sur votre branche comme ceci:

git cherry-pick ID
git Push Origin master
114
Jonathan.Brink

Oui, vous pouvez trouver votre commit dans reflog use:

git reflog

pour afficher tous les commits qui ont été/ont été créés dans votre référentiel - après cela, vous devriez extraire les commits avec la commande checkout

git checkout <your commit-SHA>

ou sélectionnez-le par:

git cherry-pick <your commit-SHA>
14
Konrad Krakowiak

Essayez git reflog, c’est-à-dire les journaux de référence, vous permet de revenir à l’historique de votre référentiel local.

https://git-scm.com/docs/git-reflog

4
Parano