Laquelle de ces lignes est correcte?
git checkout 'another_branch'
Ou
git checkout origin 'another_branch'
Ou
git checkout origin/'another_branch'
Et quelle est la différence entre ces lignes?
git
github
version-control
gitlab
git-checkout
Benyamin Jafari
la source
la source
git checkout [branch]
pour la plupart des utilisateurs qui viennent à cette questionRéponses:
Si
another_branch
existe déjà localement et que vous n'êtes pas sur cette branche,git checkout another_branch
bascule alors sur la branche.Si
another_branch
n'existe pas mais existeorigin/another_branch
, alorsgit checkout another_branch
est équivalent àgit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. C'est de créer àanother_branch
partir deorigin/another_branch
et de définirorigin/another_branch
en amont deanother_branch
.Si aucun n'existe,
git checkout another_branch
renvoie une erreur.git checkout origin another_branch
renvoie une erreur dans la plupart des cas. S'ilorigin
s'agit d'une révision et d'another_branch
un fichier, il extrait le fichier de cette révision, mais ce n'est probablement pas ce que vous attendez.origin
est principalement utilisé dansgit fetch
,git pull
etgit push
comme une télécommande, un alias de l'URL du dépôt distant.git checkout origin/another_branch
réussit s'ilorigin/another_branch
existe. Il conduit à être dans un état HEAD détaché, pas sur une branche. Si vous effectuez de nouveaux validations, les nouvelles validations ne sont accessibles depuis aucune branche existante et aucune des branches ne sera mise à jour.MISE À JOUR :
Comme la version 2.23.0 a été publiée, nous pouvons également l'utiliser
git switch
pour créer et changer de branche.S'il
foo
existe, essayez de basculer versfoo
:Si
foo
n'existe pas etorigin/foo
existe, essayez de créer àfoo
partir deorigin/foo
, puis basculez versfoo
:Plus généralement, s'il
foo
n'existe pas, essayez de créer àfoo
partir d'une référence connue ou d'un commit, puis passez àfoo
:Si nous maintenons un référentiel dans Gitlab et Github en même temps, le référentiel local peut avoir deux télécommandes, par exemple,
origin
pour Gitlab etgithub
pour Github. Dans ce cas, le référentiel aorigin/foo
etgithub/foo
.git switch foo
va se plaindrefatal: invalid reference: foo
, car il ne sait pas à partir de quelle référence,origin/foo
ougithub/foo
, pour créerfoo
. Nous devons le spécifier avecgit switch -c foo origin/foo
ougit 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:S'il
foo
existe, essayez de recréer / forcer la création àfoo
partir (ou de le réinitialiserfoo
) d'une référence ou d'une validation connue, puis passez àfoo
:qui équivalent à:
Essayez de basculer vers un HEAD détaché d'une référence ou d'un commit connu:
Si vous souhaitez simplement créer une branche sans y basculer, utilisez
git branch
plutôt. Essayez de créer une branche à partir d'une référence connue ou d'un commit:la source
git checkout
commande fait trop de choses, à mon avis. C'est pourquoi il y a tant de modes de fonctionnement ici. Si la seule chose àgit checkout
faire était de changer de branche, la réponse serait simple, mais elle peut également créer des branches et même extraire des fichiers à partir de validations spécifiques sans changer de branche.git switch
pour passer à une branche.git checkout
place les anciennes versions, qui fonctionnent également dans les versions modernes.Passer à une autre branche dans git. Réponse simple,
git-checkout - Changer de branche ou restaurer des fichiers d'arborescence de travail
Avant de changer de branche, assurez-vous de ne pas avoir de fichiers modifiés, dans ce cas, vous pouvez valider les modifications ou les cacher.
la source
[
git checkout "branch_name"
]est une autre façon de dire:
[
git checkout -b branch_name origin/branch_name
]dans le cas où "nom_branche" n'existe qu'à distance.
[
git checkout -b branch_name origin/branch_name
] est utile si vous avez plusieurs télécommandes.Concernant [
git checkout origin 'another_branch'
] je ne suis pas sûr que ce soit possible, AFAK vous pouvez le faire en utilisant la commande "fetch" - [git fetch origin 'another_branch'
]la source
Avec Git 2.23 , on peut utiliser
git switch <branch name>
pour changer de branche.la source
Ce qui a fonctionné pour moi est le suivant:
la source
Commandes utiles pour travailler au quotidien:
la source
Si vous voulez que la branche suive la branche distante, ce qui est très important si vous allez valider des modifications dans la branche et tirer des modifications, etc., vous devez utiliser ajouter un -t pour le paiement réel, par exemple:
git checkout -t branchname
la source
Vérifier :
git branch -a
Si vous n'obtenez qu'une seule succursale. Suivez ensuite les étapes ci-dessous.
git config --list
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
la source
depth
param) précédemment et que vous vous demandez maintenant pourquoi vous ne pouvez pas récupérer d'autres branches distantes enerror: pathspec 'another_branch' did not match any file(s) known to git
utilisant les commandes suggérées ci-dessus. Ce n'est sûrement pas l'objet de la question d'origine, mais cela peut aider les autres à se gratter la tête ici.J'utilise cela pour passer d'une branche à une autre, n'importe qui peut l'utiliser, cela fonctionne pour moi comme un charme.
git switch [branchName] OU git checkout [branchName]
ex: git switch develop OR
git checkout develop
la source