Depuis git reset
"pull" ou "merge" laisse toujours la pointe d'origine de la branche courante dedans ORIG_HEAD
.
git reset --hard ORIG_HEAD
Une réinitialisation difficile ramène votre fichier d'index et l'arborescence de travail à cet état et réinitialise la pointe de la branche à ce commit.
git reset --merge ORIG_HEAD
Après avoir inspecté le résultat de la fusion, vous pouvez constater que le changement dans l'autre branche n'est pas satisfaisant. L'exécution de " git reset --hard ORIG_HEAD
" vous permettra de revenir là où vous étiez, mais elle supprimera vos modifications locales, dont vous ne voulez pas. " git reset --merge
" conserve vos modifications locales.
Avant d'appliquer des correctifs, ORIG_HEAD est défini sur la pointe de la branche actuelle.
Ceci est utile si vous avez des problèmes avec plusieurs validations, comme l'exécution de ' git am
' sur la mauvaise branche ou une erreur dans les validations qui est plus facilement corrigée en changeant la boîte aux lettres (par exemple + erreurs dans les lignes "De:").
De plus, la fusion définit toujours « .git/ORIG_HEAD
» à l'état d'origine de HEAD afin qu'une fusion problématique puisse être supprimée à l'aide de « git reset ORIG_HEAD
».
Remarque: d' ici
HEAD est un pointeur en mouvement. Parfois, cela signifie la branche actuelle, parfois non.
Donc, HEAD n'est PAS déjà synonyme de "branche actuelle" partout.
HEAD signifie "courant" partout dans git, mais cela ne signifie pas nécessairement "branche courante" (c'est-à-dire HEAD détaché).
Mais cela signifie presque toujours le "commit actuel".
Il s'agit du commit " git commit
" construit sur, et " git diff --cached
" et " git status
" comparer.
Cela signifie la branche actuelle uniquement dans des contextes très limités (exactement quand nous voulons qu'un nom de branche fonctionne --- réinitialisation et croissance de la pointe de la branche via commit / rebase / etc.).
Reflog est un véhicule pour remonter le temps et les machines à remonter le temps ont une interaction intéressante avec la notion de «courant».
HEAD@{5.minutes.ago}
pourrait signifier "déréférencer HEAD symref pour savoir sur quelle branche nous nous trouvons MAINTENANT, puis découvrir où se trouvait la pointe de cette branche il y a 5 minutes".
Alternativement, cela pourrait signifier "quel est le commit que j'aurais appelé HEAD il y a 5 minutes, par exemple si j'avais" git show HEAD "à l'époque".
git1.8.4 (juillet 2013) présente introduit une nouvelle notation!
(en fait, ce sera pour 1.8.5 ou 1.9, Q4 2013: réintroduit avec commit 9ba89f4 )
Au lieu de taper quatre majuscules " HEAD
", vous pouvez dire " @
" maintenant,
par exemple " git log @
".
Voir commit cdfd948
Taper ' HEAD
' est fastidieux, surtout quand on peut utiliser ' @
' à la place.
La raison du choix de ' @
' est qu'il découle naturellement de la ref@op
syntaxe (par exemple HEAD@{u}
), sauf que nous n'avons pas de référence, et aucune opération, et quand nous n'en avons pas, il est logique de supposer ' HEAD
'.
Alors maintenant, nous pouvons utiliser ' git show @~1
', et toutes ces bonnes choses.
Jusqu'à présent ' @
' était un nom valide, mais il entre en conflit avec cette idée, alors rendons-le invalide. Probablement très peu de gens, le cas échéant, ont utilisé ce nom.
Un article de blog pendant la période 1.8.4-rc3 (14 août 2013) a annoncé que cette fonctionnalité avait été annulée et retardée (merci Cupcake pour le heads-up ).
Encore une fois, il est à nouveau introduit avec commit 9ba89f4 (sept. 2013).
Voir commit 2c2b664 :
Rétablir "Ajouter un nouveau @
raccourci pour HEAD
"
Ceci annule le commit cdfd948 , car il ne s'applique pas seulement à " @
" (et aux formulaires avec des modificateurs comme @{u}
appliqué à lui), mais affecte également par exemple " refs/heads/@/foo
", ce qu'il ne devrait pas.
L'idée de base de donner un raccourci pourrait être bonne, et le sujet peut être réessayé plus tard, mais revenons pour éviter d'affecter les cas d'utilisation existants pour l'instant pour la prochaine version.
HEAD
est maintenant (git1.8.4 à venir) '@
'! Voir ma réponse modifiée ci