Si je comprends bien, git checkout
consiste à déplacer le head
.
Par exemple, git checkout <commit id>
consiste à déplacer le head
vers le <commit id>
, git checkout <branch_name>
consiste à déplacer le head
vers le <branch_name>
.
Toutefois, git checkout .
consiste à ignorer les modifications non mises en scène. il ne semble pas y avoir d'activité sur head
.
Je ne peux donc pas comprendre pourquoi git
utilise la même clé Word checkout
pour faire deux choses totalement non relatives. Ou git checkout .
fonctionne toujours sur la base de head
?
Comme vous l'avez remarqué, la commande checkout
est surchargée pour signifier deux choses différentes. Je pense git help checkout
rend cela assez clair cependant:
git-checkout - Switch branches or restore working tree files
Il existe plusieurs formes de commande, celle dont vous parlez est:
git checkout [<tree-ish>] [--] <pathspec>...
Dans votre cas, le <tree-ish>
l'argument est omis et le --
l'argument pour séparer les options et les noms de fichiers est omis et <pathspec>
est .
(c'est-à-dire le répertoire courant). Cette forme de la commande est documentée comme suit:
Écraser les chemins dans l'arborescence de travail en les remplaçant par le contenu de l'index ou du
<tree-ish>
(le plus souvent un commit).
Donc, puisque vous n'avez pas spécifié de <tree-ish>
argument, le contenu des fichiers dans .
sont remplacés par le contenu de l'index. Cela signifie ignorer toute modification dans .
qui n'ont pas encore été ajoutés à l'index.
Vous pouvez le considérer comme "extraire ces fichiers du référentiel", ce qui peut signifier soit à partir d'une validation, soit à partir de l'index (qui peut contenir des modifications qui ont été mises en place mais pas encore validées).
vous pouvez utiliser git checkout pour changer le nom de votre branche & ainsi que pour réinitialiser un fichier (à distance) ou un fichier dans une branche particulière.
le travail dépendra de l'argument après le paiement. s'il s'agit d'un nom de fichier, il réinitialise le fichier comme dans l'index actuel. cela est également utile pour obtenir le fichier à partir d'autres branches.
s'il s'agit d'un nom de branche, il changera la branche de travail actuelle.