Je m’engage dans un repository git pour la première fois; Je regrette alors le commit et je veux le revenir. J’essaie
# git reset --hard HEAD~1
Je reçois ce message:
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
Ce commit est le premier commit du référentiel. Avez-vous une idée de comment annuler la validation initiale de git?
Il vous suffit de supprimer la twig sur laquelle vous vous trouvez. Vous ne pouvez pas utiliser git branch -D
car cela a un contrôle de sécurité. Vous pouvez utiliser update-ref
pour cela.
git update-ref -d HEAD
N’utilisez pas rm -rf .git
ou quelque chose comme ça car cela effacerait complètement votre référentiel entier, y compris toutes les autres twigs, ainsi que la twig que vous essayez de réinitialiser.
Vous pouvez supprimer le HEAD et restaurer votre référentiel dans un nouvel état, où vous pouvez créer une nouvelle validation initiale:
git update-ref -d HEAD
Après avoir créé une nouvelle validation, si vous avez déjà effectué une transmission à distance, vous devrez la forcer à la télécommande pour remplacer la validation initiale précédente:
git push --force origin
Cette question était liée à cet article de blog et une solution alternative a été proposée pour les nouvelles versions de Git:
git branch -m master old_master git checkout --orphan master git branch -D old_master
Cette solution suppose que:
master
old_master
donc je suis libre d’utiliser ce nom Il renommera la twig existante en old_master
et créera un nouveau master
twig orphelin (comme s’il était créé pour les nouveaux repositorys), après quoi vous pourrez librement supprimer old_master
… ou non. Dépend de vous.
Remarque: Le déplacement ou la copie d’une twig git préserve son renvoi (voir ce code ) lors de la suppression puis la création d’une nouvelle twig le détruit. Puisque vous voulez revenir à l’état d’origine sans historique, vous souhaiterez probablement supprimer la twig, mais d’autres voudront peut-être considérer cette petite note.
Le moyen le plus simple serait:
rm -fr .git
depuis le répertoire où vous avez effectué git init
.
Vous n’avez rien que vous voulez garder, alors vous ne perdez rien. Cependant, cette opération n’est sûre que si vous n’avez rien d’autre dans votre référentiel. Dans les circonstances décrites dans la question “Valider le référentiel la première fois – puis le regretter”, la procédure est sûre. Très souvent, cependant, ce n’est pas sûr.
Vous ne pouvez pas Alors:
rm -rf .git/ git init git add -A git commit -m 'Your new commit message'
git reset –hard apporte des modifications, puis fait
git add -A git commit --amend --no-edit
ou
git add -A git commit --amend -m "commit_message"
et alors
git push origin master --force
–force réécrira que vous avez réinitialisé lors de la première étape.
Ne faites pas cela, car vous êtes sur le point d’aller à l’encontre de l’idée de systèmes VCS et de git en particulier. La seule bonne méthode consiste à créer un nouveau et supprimer une twig inutile. Voir la git help branch
pour plus d’informations.
Tout ce que vous avez à faire est de revenir sur le commit.
git revert {commit_id}'
Alors poussez
git push origin -f