Mon collègue et moi travaillons sur le même référentiel. Nous l'avons divisé en deux branches, chacune techniquement pour des projets différents, mais elles ont des similitudes, nous voudrons donc parfois nous engager à nouveau dans le * à master
partir du branch
.
Cependant, j'ai le branch
. Comment mon collègue peut-il tirer cette branche en particulier?
Un git clone
du référentiel ne semble pas créer les branches localement pour lui, bien que je puisse les voir en direct après un coup de pouce de ma part.
Aussi, quand j'ai fait la branche à l'origine, je l'ai fait -b checkout
. Cela fait-il une grande différence?
$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
$ git fetch origin discover
$ git checkout discover
Ce sont les commandes que j'ai exécutées. Mais cela ne fonctionne définitivement pas.
Je veux pouvoir vérifier cette branche, puis repousser et valider uniquement les modifications de branches de divers collaborateurs ou postes de travail .
la source
git fetch --all
puis pour afficher toutes les succursalesgit branch
:, puis j'ai vérifié la succursale:git checkout nameofnewbranch
git fetch origin discover:discover && git checkout discover
Réponses:
Vous devez créer une branche locale qui suit une branche distante. La commande suivante créera une branche locale nommée daves_branch , suivant l' origine de la branche distante / daves_branch . Lorsque vous appuyez sur vos modifications, la branche distante est mise à jour.
Pour les versions les plus récentes de Git:
--track
est un raccourci pourgit checkout -b [branch] [remotename]/[branch]
indiquer où [nom distant] est l' origine dans ce cas et [branche] est deux fois la même, daves_branch dans ce cas.Pour Git 1.5.6.5, vous en aviez besoin:
Pour Git 1.7.2.3 et supérieur, cela suffit (cela aurait pu commencer plus tôt, mais c'est la première confirmation que j'ai pu trouver rapidement):
Notez qu'avec les versions récentes de Git, cette commande ne créera pas de branche locale et vous mettra dans un état 'HEAD détaché'. Si vous voulez une succursale locale, utilisez l'
--track
option.Tous les détails sont ici: 3.5 Git Branching - Remote Branches, Tracking Branches
la source
git checkout -b --track daves_branch origin/daves_branch
J'ai utilisé
fetch
suivi decheckout
...... où
<rbranch>
est la branche distante ou la référence source et<lbranch>
est la branche locale ou référence de destination encore inexistante que vous souhaitez suivre et que vous souhaitez probablement nommer de la même manière que la branche distante ou la référence source. Ceci est expliqué dans les options de l'explication de .<refspec>
Git est tellement intelligent qu'il termine automatiquement la première commande si je tabule après les premières lettres de la branche distante. Autrement dit, je n'ai même pas besoin de nommer la branche locale, Git copie automatiquement le nom de la branche distante pour moi. Merci Git!
De même, comme le montre la réponse de ce post similaire sur le débordement de pile , si vous ne nommez pas la branche locale
fetch
, vous pouvez toujours la créer lorsque vous la retirez en utilisant l'-b
indicateur. Autrement dit,git fetch <remote> <branch>
suivi degit checkout -b <branch> <remote>/<branch>
fait exactement la même chose que ma réponse initiale. Et évidemment, si votre référentiel n'a qu'une seule télécommande, alors vous pouvez le fairegit checkout <branch>
aprèsfetch
et il créera une branche locale pour vous. Par exemple, vous venez de cloner un référentiel et souhaitez extraire des branches supplémentaires de la télécommande.Je pense qu'une partie de la documentation de
fetch
peut avoir été copiée textuellementpull
. En particulier , la section<refspec>
dans les options est le même. Cependant, je ne crois pas que celafetch
arrivera jamaismerge
, de sorte que si vous laissez le côté destination du côlon vide,fetch
ne faites rien .REMARQUE:
git fetch <remote> <refspec>
est un raccourci pourgit fetch <remote> <refspec>:
lequel ne ferait donc rien, maisgit fetch <remote> <tag>
est le même que celuigit fetch <remote> <tag>:<tag>
qui doit copier la télécommande<tag>
localement.Je suppose que cela n'est utile que si vous souhaitez copier une branche distante localement, mais pas nécessairement la vérifier immédiatement. Sinon, j'utiliserais maintenant la réponse acceptée , qui est expliquée en détail dans la première section de la description de la commande et plus tard dans la section des options sous l'explication de
--track
, car il s'agit d'une ligne unique. Eh bien ... une sorte de monoplace, car il faudrait toujours courir engit fetch <remote>
premier.FYI: L'ordre de la
<refspecs>
(source: destination) explique la méthode bizarre pré Git 1.7 pour supprimer les branches distantes . Autrement dit, ne rien insérer dans la spécification de destination.la source
git fetch remote branch
n'a pas ajouté de tête de branche pour moi, bien que toutes les références aient été récupérées, donc quand j'ai essayé de suivre les étapes de la réponse acceptée, j'ai eu l'erreurpathspec did not match any file(s) known to git.
, mais l'rbranch:lbranch
approche a fonctionné. Fait intéressant, il a également récupéré toutes les balises commençant par le même préfixe, comme s'il s'agissait d'un caractère générique (rbranch*
).fetch
commande. Si la réponse acceptée est logique, car OP note qu'il a déjà fait la recherche. C'est du moins le problème que j'ai rencontré.Si vous essayez de "retirer" une nouvelle branche distante (qui n'existe que sur la télécommande, mais pas localement), voici ce dont vous aurez besoin:
Cela suppose que vous souhaitez récupérer l' origine . Sinon, remplacez origine par votre nom de télécommande .
la source
git fetch
etgit fetch remote
feront la même chose. Si vous devez récupérer à partir d'une télécommande autre queorigin
, vous pouvez le faire en utilisantgit fetch <other_remote_name>
. Cette situation est très rare, juste mentionnée ici pour être complète.Pour vérifier myBranch qui existe à distance et non localement - Cela a fonctionné pour moi:
J'ai reçu ce message:
la source
-t
?-t
et j'ai obtenuYou are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.
parce qu'il n'y avait pas de branche locale du même nom. J'ai dû relancer avec-t
pour corriger.checkout
pour le créer. Merci!--all
n'est jamais une bonne idée, car il téléchargera chaque fichier sur chaque branche. Cela prendra plus de temps et d'espace. Il vaut mieux être précis avec le nom de la branche et faire comme çaUtilisez
git branch -a
(branches locales et distantes) ougit branch -r
(uniquement les branches distantes) pour voir toutes les télécommandes et leurs branches. Vous pouvez ensuite faire ungit checkout -t remotes/repo/branch
à la télécommande et créer une branche locale.Il existe également une commande git-ls-remote pour voir toutes les références et balises de cette télécommande.
la source
git checkout remotes/repo/branch
fait que git checkout recherche une pathspec, pas un repo distant.Le titre et la question sont confus:
Si la question est, comment puis-je obtenir une branche distante pour travailler avec, ou comment puis-je Git checkout une branche distante? , une solution plus simple est:
Avec Git (> = 1.6.6), vous pouvez utiliser:
Si local
<branch_name>
n'est pas trouvé, mais qu'il existe une branche de suivi dans exactement une télécommande avec un nom correspondant, traitez-la comme équivalente à:Voir la documentation de Git checkout
Pour votre ami:
la source
La façon la plus simple de le faire, du moins pour moi:
la source
fetch
commande, la branche requise sera disponible sur la machine locale.git checkout -b 'your_branch' origin/'remote branch'
est requis pour commander cette branche.Utilisation:
Il s'agit d'une opération suffisamment courante pour que Git fournisse le
--track
raccourci:En fait, c'est tellement courant qu'il y a même un raccourci pour ce raccourci. Si le nom de la branche que vous essayez de vérifier (a) n'existe pas et (b) correspond exactement à un nom sur une seule télécommande, Git créera une branche de suivi pour vous:
Pour configurer une branche locale avec un nom différent de la branche distante, vous pouvez facilement utiliser la première version avec un nom de branche locale différent:
Maintenant, votre succursale locale
sf
tirera automatiquement deorigin/serverfix
.Source: Pro Git, 2e édition , écrit par Scott Chacon et Ben Straub (coupé pour la lisibilité)
la source
Avec cette simple commande:
la source
Pour récupérer une branche qui existe à distance, la manière la plus simple est:
Vous pouvez voir s'il existe déjà sur une télécommande avec:
Cela ramènera la branche distante à votre section locale et suivra automatiquement la branche distante.
la source
Ce qui m'a aidé, c'est
1) Pour afficher toutes les branches distantes disponibles (par exemple, "nom de la branche distante")
2) Créez une branche locale en utilisant le nom de la branche distante
la source
git push
sans aucun autre argument? La branche locale nommée est-elleremote-branch-name
automatiquement associée à (suivi vers) la branche distante nomméeorigin/remote-branch-name
. Ou avez-vous besoin de courirgit push -u origin remote-branch-name
Vous pouvez également récupérer et extraire la branche distante en une seule fois:
la source
la source
j'ai tapé $
et j'ai
la source
git checkout -b <branch_name> --track <remote>/<branch_name>
Parfois, on vous demande de ne pas jouer avec la branche principale et de travailler uniquement avec la branche distante (comme on me l'a demandé). Vous n'avez donc besoin que de la succursale distante.
Donc, pour cloner la branche distante seule (sans le maître), faites ceci
où remote_branch_name est le nom de la branche distante
Par exemple,
Cela vous permettra de cloner la branche distante vers votre branche locale avec le nom de la branche distante.
Maintenant, si vous validez votre code et que vous le poussez, le code sera soumis à cette seule branche.
la source
[Réponse rapide]
Il existe de nombreuses alternatives, et mes préférées sont:
- Alternative 1:
- Alternative 2:
la source
Disons que votre télécommande est [email protected] et que vous voulez sa branche random_branch. Le processus devrait être le suivant:
Vérifiez d'abord la liste de vos télécommandes par
Si vous n'avez pas la télécommande [email protected] dans la sortie de la commande ci-dessus, vous l'ajouteriez en
La branche locale my_copy_random_branch suivrait la branche random_branch de votre télécommande.
la source
git fetch --all & git checkout <branch name>
la source
git fetch && git checkout <your friend's branch name>
devrait faire l'affairela source
Je veux vous donner une commande à une ligne pour récupérer toutes les branches distantes dans votre section locale et passer à la branche locale que vous venez de créer:
Après avoir exécuté la commande ci-dessus, vous obtiendrez le message ci-dessous:
La première ligne indique que vous êtes passé à une nouvelle succursale - pourquoi de nouvelles? Il est déjà là en télécommande!
Mais en fait, vous devez également le créer localement. La branche est extraite de l'index distant et créée localement pour vous.
Voici
discover
une nouvelle branche qui a été créée à partir de la branche distante de votre référentieldiscover
.Mais la deuxième ligne donne plus d'informations que la première qui nous dit que:
Notre succursale est configurée pour suivre les succursales distantes du même nom.
Bien qu'il
git fetch
récupère toutes les branches au niveau local. Mais si vous l'exécutezgit branch
, vous ne verrez que lamaster
branche en local. Pourquoi ?Parce que pour chaque branche que vous avez à distance, vous devez également la créer localement, pour la suivre comme
git checkout <branchname>
comme nous l'avons fait dans l'exemple ci-dessus.Après avoir exécuté la
git checkout
commande, vous pouvez exécutergit branch
, et maintenant vous pouvez voir à la fois la branche:la source
Si vous souhaitez récupérer toutes les branches distantes, veuillez taper juste:
la source
Essayez simplement:
la source
Si vous avez un référentiel cloné, la
--depth 1
plupart des commandes répertoriées ne fonctionneront pas. Par exemple, voir iciDans ce cas, je reclonerais le référentiel, mais il existe peut-être d'autres techniques, par exemple git shallow clone (clone --depth) manque des branches distantes
la source
Si vous connaissez déjà votre succursale distante comme ça ...
et vous connaissez le nom de la branche que vous souhaitez extraire , par exemple, br1.2.3.4 , puis faites
Il ne reste plus qu'à commander la succursale
Faites-en ensuite de nouvelles branches.
la source
Les étapes sont les suivantes;
git fetch origin
ougit fetch --all
, cela va chercher toutes les branches distantes dans votre section locale, puis c'est la deuxième option avec laquelle vous pouvez procéder.git checkout --track origin/<The_remote_branch you want to switch over>
Ensuite, travaillez sur cette branche et vous pouvez vérifier si vous êtes sur cette branche ou non en tapant
Il affiche la branche dans laquelle vous vous trouvez actuellement.
la source
git branch <name> --track origin/<name>
la source
Vérifiez votre
.git/config
fichier, en particulier le suivi présent lors de la récupération pour cette télécommande.Si elle
heads/*
pointe versrandomRemote/*
, lorsque vous exécutezgit fetch randomRemote
, il récupérera toutes les branches.Ensuite, vous pouvez simplement vérifier cette branche.
Autrement,
Vous devez ajouter des branches distantes au suivi à l'aide de ceci. Vérifiez votre
.git/config
après avoir exécuté cela. Tu comprendras.Courez
git fetch randomRemote
. Cela va récupérer la branche distante.Vous pouvez maintenant courir
git checkout randomBranch
.la source
Vous utilisez «git pull» pour séparer vos branches. J'utiliserai les noms de référentiel et de branche pour vous aider, car «lbranch» et «rbranch» sont difficiles à déchiffrer.
Utilisons:
Vous, ou n'importe quel collègue, pouvez exécuter ceci pour extraire uniquement votre branche, quel que soit le nombre de branches:
la source
Une simple commande
git checkout remote_branch_name
vous aidera à créer une branche locale qui aura toutes les modifications dans la branche distante.la source
la source