Laquelle de ces lignes est correcte ?
git checkout 'another_branch'
Ou
git checkout origin 'another_branch'
Ou
git checkout origin/'another_branch'
git checkout 'another_branch'
Ou
git checkout origin 'another_branch'
Ou
git checkout origin/'another_branch'
Si another_branch
existe déjà localement et que vous n'êtes pas sur cette branche, alors git checkout another_branch
passe à la branche.
Si another_branch
n'existe pas mais origin/another_branch
le fait, alors git checkout another_branch
est équivalent à git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. C'est pour créer another_branch
de origin/another_branch
et mettre origin/another_branch
comme l'amont de another_branch
.
Si aucun des deux n'existe, git checkout another_branch
renvoie une erreur.
git checkout origin another_branch
renvoie une erreur dans la plupart des cas. Si origin
est une révision et another_branch
est un fichier, alors il vérifie le fichier de cette révision mais très probablement ce n'est pas ce que vous attendez. origin
est surtout utilisé dans git fetch
, git pull
et git push
comme distant, un alias de l'url du référentiel distant.
git checkout origin/another_branch
réussit si origin/another_branch
existe. Il conduit à être dans l'état HEAD détaché, pas sur une branche. Si vous faites de nouveaux commits, les nouveaux commits ne sont pas accessibles depuis les branches existantes et aucune des branches ne sera mise à jour.
UPDATE :
Comme la version 2.23.0 a été publiée, nous pouvons aussi utiliser git switch
pour créer et changer de branche.
Si foo
existe, essayez de passer à foo
:
git switch foo
Si foo
n'existe pas et origin/foo
existe, essayez de créer foo
de origin/foo
et ensuite passer à foo
:
git switch -c foo origin/foo
# or simply
git switch foo
Plus généralement, si foo
n'existe pas, essayez de créer foo
à partir d'une référence ou d'un commit connu et ensuite passer à foo
:
git switch -c foo <ref>
git switch -c foo <commit>
Si nous maintenons un référentiel dans Gitlab et Github en même temps, le référentiel local peut avoir deux remotes, par exemple, origin
pour Gitlab et github
pour Github. Dans ce cas, le dépôt a origin/foo
et github/foo
. git switch foo
se plaindra fatal: invalid reference: foo
car on ne sait pas de quelle référence il s'agit, origin/foo
ou github/foo
pour créer foo
. Nous devons le spécifier avec git switch -c foo origin/foo
ou git switch -c foo github/foo
selon le besoin. Si nous voulons créer des branches à partir des deux branches distantes, il est préférable d'utiliser des noms distinctifs pour les nouvelles branches :
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
Si foo
existe, essayez de recréer/forcer la création foo
de (ou réinitialiser foo
à) une référence ou un commit connu et ensuite passer à foo
:
git switch -C foo <ref>
git switch -C foo <commit>
qui sont équivalents à :
git switch foo
git reset [<ref>|<commit>] --hard
Essayez de passer à un HEAD détaché d'une référence ou d'un commit connu :
git switch -d <ref>
git switch -d <commit>
Si vous voulez juste créer une branche mais pas y passer, utilisez git branch
à la place. Essayez de créer une branche à partir d'une référence ou d'un commit connu :
git branch foo <ref>
git branch foo <commit>
Cette réponse est correcte (comme d'habitude, et elle a été approuvée), mais j'ajouterai un commentaire indiquant que mai être utile : le git checkout
Le commandement fait trop de choses, à mon avis. C'est pourquoi il y a tant de modes de fonctionnement ici. Si la seule chose git checkout
était commutateur branches, la réponse serait simple, mais elle peut aussi créer branches, et même extraire des fichiers de commits spécifiques. sans le changement de branche.
C'est la bonne réponse, mais cela montre comment git est un peu foiré en ligne de commande. git checkout pour changer de branche ?
@thang Eh bien, avec la version 2.23.0, ce problème est résolu : vous pouvez maintenant utiliser git switch
pour passer à une branche.
Passer à une autre branche dans git. Réponse simple,
git-checkout - Changer de branche ou restaurer les fichiers de l'arbre de travail
git fetch origin <----this will fetch the branch
git checkout branch_name <--- Switching the branch
Avant de changer de branche, assurez-vous que vous n'avez pas de fichiers modifiés, dans ce cas, vous pouvez livrer les changements ou vous pouvez les cacher.
La dernière commande me met dans l'état détaché HEAD. Ce qui signifie qu'on ne peut pas éditer la branche.
La branche que vous essayez d'extraire n'est pas extraite, alors vous devez l'extraire avant d'extraire. Vous pouvez sauter la récupération si la branche est à jour et utiliser git checkout branchname.
[ git checkout "branch_name"
]
est une autre façon de dire :
[ git checkout -b branch_name origin/branch_name
]
au cas où "nom_branche" existe uniquement à distance.
[ git checkout -b branch_name origin/branch_name
est utile dans le cas où vous avez plusieurs télécommandes.
En ce qui concerne [ git checkout origin 'another_branch'
] Je ne suis pas sûr que cela soit possible, AFAK vous pouvez le faire en utilisant la commande "fetch". -- [ git fetch origin 'another_branch'
]
Cela pourrait être utile lorsque vous avez fait un clone peu profond (en utilisant le depth
) précédemment et vous vous demandez maintenant pourquoi vous ne pouvez pas récupérer d'autres branches distantes en obtenant le paramètre error: pathspec 'another_branch' did not match any file(s) known to git
en utilisant les commandes suggérées ci-dessus. Ce n'est sûrement pas le sujet de la question initiale mais cela peut aider d'autres personnes qui se grattent la tête ici.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
76 votes
git checkout [branch]
pour la plupart des utilisateurs venant à cette question