Question Est-il possible de passer à la caisse précédente?


Je veux en quelque sorte l'équivalent de cd - pour git. Si je suis en succursale master et je passe la commande foo, J'aimerais pouvoir taper quelque chose comme git checkout - revenir à master, et être capable de taper à nouveau pour revenir à foo.

Est-ce que quelque chose comme ça existe? Serait-ce difficile à mettre en œuvre?


448
2017-08-26 15:09


origine


Réponses:


Du notes de version pour 1.6.2

@{-1} est un moyen de faire référence à la dernière branche sur laquelle vous étiez. C'est
  accepté non seulement lorsqu'un nom d'objet est attendu, mais partout où   nom de la succursale est attendu et agit comme si vous avez tapé le nom de la branche.
  Par exemple. git branch --track mybranch @{-1}, git merge @{-1}, et
git rev-parse --symbolic-full-name @{-1} travaillerait comme prévu.

et

git checkout - est un raccourci pour git checkout @{-1}.


780
2017-08-26 16:05



La manière la plus simple de le faire aujourd'hui est:

git checkout -

... qui est un alias de:

git checkout @{-1}

git checkout minus

Si vous voulez en savoir plus à ce sujet, j'ai écrit un article entier à ce sujet ici: Commander La branche précédente à Git.


115
2017-10-18 14:23



Comme le souligne @Karl et de git checkout Manuel:

En tant que cas particulier, la syntaxe "@ {- N}" pour le N-ième dernier contrôle de branche   sur la branche (au lieu de la détacher). Vous pouvez également spécifier - qui est   synonyme de "@ {- 1}".

Donc les deux git checkout - et git checkout @{-1} travaillerait dans ce cas

Je crois que le plus proche utilise le git reflog et analyser la dernière moving from branch1 to branch2 et git checkout branch1


23
2017-08-26 15:16



Il suffit d'ajouter un peu plus de détails aux réponses précédentes pour comprendre le mécanisme par lequel git checkout @{-N} travaux. Il marche le reflog pour inspecter l'histoire de la caisse, donc si vous vouliez implémenter quelque chose de similaire, vous devriez être capable d'analyser la sortie de git reflog à la recherche de checkout: lignes. Vous pouvez vérifier l'implémentation dans la source git sha1_name.c, spécifiquement la fonction interpret_nth_prior_checkout.


6
2017-07-27 17:15



J'ai atterri à cette question avec la même pensée pour vérifier ma branche précédente. j'utilise ohmyz dans Mac. Le commandement ci-dessous m'a aidé.

$ gco -

2
2017-08-02 16:34