web-dev-qa-db-fra.com

Git checkout - revenir à HEAD

Je fais mon projet et, à un moment donné, j'ai découvert qu'une chose avait cessé de fonctionner. Je devais consulter l'état de mon code lorsqu'il fonctionnait correctement. J'ai donc décidé d'utiliser git checkout (parce que je voulais extraire quelque chose). Et j'ai donc fait

git checkout SHA

plusieurs fois en revenant au point où je ne peux pas aller à HEAD, la sortie est la suivante:

git checkout SHA-HEAD

error: Your local changes to the following files would be overwritten by checkout:
    [list of files]
Please, commit your changes or stash them before you can switch branches.
Aborting

Je suis à peu près sûr que je n'ai rien changé. La commande

git checkout master

donne le même résultat.

Est-il possible de retourner à HEAD?

Quel est le moyen sûr de "sauter par-dessus" l'histoire commet?

20
asdfgh

Vous pouvez stash (enregistrer les modifications dans la boîte temporaire) puis revenir à master branche HEAD.

$ git add .
$ git stash
$ git checkout master

saute les commits en arrière:

  • Aller à un commit-sha.

    $ git checkout <commit-sha>
    
  • Si vous avez des modifications non validées ici, vous pouvez extraire une nouvelle branche, Ajouter, Valider, Pousser la branche actuelle vers la télécommande.

    # checkout a new branch, add, commit, Push
    $ git checkout -b <branch-name>
    $ git add .
    $ git commit -m 'Changes in the commit'
    $ git Push Origin HEAD        # Push the current branch to remote 
    
    $ git checkout master         # back to master branch now
    
  • Si vous avez des modifications dans le commit spécifique et que vous ne voulez pas les conserver, vous pouvez faire stash ou reset puis passer à master (ou toute autre branche). .

    # stash
    $ git add -A
    $ git stash
    $ git checkout master
    
    # reset
    $ git reset --hard HEAD
    $ git checkout master
    
  • Après avoir extrait un commit spécifique si vous n'avez pas de modification non validée, revenez à la branche master ou other.

    $ git status          # see the changes
    $ git checkout master
    
    # or, shortcut
    $ git checkout -      # back to the previous state
    
18
Sajib Khan