web-dev-qa-db-fra.com

Comment comprenons-nous git checkout [dot]

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?

7
Yves

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).

7
Jonathan Wakely

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.

1
Akhil Surapuram