Je veux en quelque sorte l'équivalent de cd -
for git. Si je suis en succursale master
et que je passe à la caisse foo
, j'aimerais pouvoir taper quelque chose comme git checkout -
revenir à master
, et pouvoir le taper à nouveau pour revenir foo
.
Existe-t-il quelque chose comme ça? Serait-il difficile à mettre en œuvre?
git
git-checkout
Matt Briggs
la source
la source
gc-
ou était ce raccourci pourgit checkout -
Réponses:
À partir des notes de version de 1.6.2
et
la source
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
, qui est la branche amont de la branche actuelle. Il est très utile, par exemple, pourgit log @{u}..
répertorier les commits en amont qui ne sont pas encore extraits. Et l'inversegit log ..@{u}
qui n'est que les commits locaux qui ne sont pas encore poussés.La façon la plus simple de le faire de nos jours est:
... qui est un alias de:
Si vous voulez en savoir plus, j'ai écrit un article entier à ce sujet ici: Checkout The Previous Branch In Git .
la source
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. En bash, vous devez écrire quelque chose d'équivalent (obtenir reflog et le filtrer sur les lignes contenant la chaîne ": checkout:" puis extraire le nom de la branche). C'est en fait ce que faitComme le souligne @Karl et dans le
git checkout
manuel:Donc, les deux
git checkout -
etgit checkout @{-1}
fonctionneraient dans ce casLe plus proche, je crois, utilise legit reflog
et analyse les derniersmoving from branch1 to branch2
etgit checkout branch1
la source
Il suffit d'ajouter un peu plus de détails aux réponses précédentes pour comprendre le mécanisme qui
git checkout @{-N}
fonctionne. Il parcourt le reflog pour inspecter l'historique de paiement, donc si vous voulez implémenter quelque chose de similaire par vous-même, vous devriez pouvoir analyser la sortie de lagit reflog
recherche decheckout:
lignes. Vous pouvez vérifier l'implémentation dans la source gitsha1_name.c
, en particulier la fonctioninterpret_nth_prior_checkout
.la source
La version Git a
2.23
introduit lagit switch
commande que vous pouvez utiliser pour cela (et plus). Citant la documentation officielle:Dans votre cas spécifique, vous pouvez émettre
git switch -
pour revenir à la branche où vous étiez précédemment. Vous pouvez réexécuter la même commande pour revenir à la première branche.PS Ce n'est pas que vous ne savez pas déjà comment faire cela (je veux dire que cela fait 7 ans que vous avez posé cette question), mais cette commande est moins déroutante et conviviale pour les débutants car elle résout une confusion courante qui survient lors de l'utilisation
git checkout
.la source
J'ai atterri à cette question avec la même pensée pour vérifier ma branche précédente. J'utilise ohmyz dans
Mac
. La commande ci-dessous m'a aidé.la source
gco
comme un court moyen d'écrituregit checkout
. Appelle doncgco -
justegit checkout -
.git checkout -
. pour la sécurité intégrée mise à jour.La solution la plus populaire est:
Où N - nombre de pas des branches pour revenir sur l'historique de paiement.
la source
Voici des pointeurs vers les parties de la documentation de Git qui décrivent les solutions
git checkout -
et lesgit checkout @{-1}
solutions apportées par les autres réponses:Lors de la spécification d' une révision Git pour toute commande,
@{-<n>}
, par exemple@{-1}
signifie « la n ième branche / allouent vérifié avant l'actuel. » La documentation pourgit checkout <branch>
réitère: "Vous pouvez utiliser la@{-N}
syntaxe pour faire référence à la N-ème dernière branche / validation extraite à l'aide de l'git checkout
opération."Pour l'
<branch>
argument degit checkout
«vous pouvez également spécifier«-
»qui est synonyme de«@{-1}
».»la source