J'ai un projet hébergé sur GitHub. J'ai créé une branche sur un ordinateur, puis transféré mes modifications dans GitHub avec:
git Push Origin branch-name
Maintenant, je suis sur un autre ordinateur et je souhaite télécharger cette branche. Alors j'ai essayé:
git pull Origin branch-name
... mais tout cela a été écrasé ma branche principale par les modifications apportées à ma nouvelle branche.
Que dois-je faire pour extraire correctement ma branche distante sans écraser les branches existantes?
Grâce à question connexe , j'ai découvert qu'il me fallait "extraire" la branche distante en tant que nouvelle branche locale et spécifier un nouveau nom de branche locale.
git checkout -b newlocalbranchname Origin/branch-name
Ou tu peux faire:
git checkout -t Origin/branch-name
Ce dernier créera une branche qui est également configurée pour suivre la branche distante.
Mise à jour: Cela fait 5 ans que j'ai posté cette question pour la première fois. J'ai beaucoup appris et git s'est amélioré depuis. Mon flux de travail habituel est un peu différent maintenant.
Si je veux aller chercher les branches distantes, je lance simplement:
git pull
Cela va récupérer toutes les branches distantes et fusionner la branche actuelle. Il affichera une sortie qui ressemble à ceci:
From github.com:andrewhavens/example-project
dbd07ad..4316d29 master -> Origin/master
* [new branch] production -> Origin/production
* [new branch] my-bugfix-branch -> Origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.
Maintenant, Git est au courant de mon nouveau my-bugfix-branch
. Pour basculer vers cette branche, je peux simplement exécuter:
git checkout my-bugfix-branch
Normalement, je devrais créer la branche avant de pouvoir la vérifier, mais dans les versions plus récentes de git, il est assez intelligent de savoir que vous voulez effectuer un paiement une copie locale de cette succursale distante.
Pour les nouveaux utilisateurs de Git comme moi, voici quelques étapes à suivre pour télécharger un référentiel distant, puis basculer vers la branche que vous souhaitez afficher. Ils abusent probablement de Git d'une certaine manière, mais cela a fonctionné pour moi! :-)
Clonez le référentiel pour lequel vous souhaitez télécharger le code (dans cet exemple, j'ai choisi le projet LRResty sur Github):
$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty
Vérifiez quelle branche vous utilisez à ce stade (il devrait s'agir de la branche principale):
$ git branch
* master
Découvrez la branche que vous voulez, dans mon cas ça s'appelle 'arcifiée':
$ git checkout -b arcified Origin/arcified
Branch arcified set up to track remote branch arcified from Origin.
Switched to a new branch 'arcified'
Confirmez que vous utilisez maintenant la branche que vous vouliez:
$ git branch
* arcified
master
Si vous souhaitez mettre à jour le code ultérieurement, exécutez git pull
:
$ git pull
Already up-to-date.
Vous pouvez utiliser git remote comme:
git fetch Origin
puis configurez une branche locale pour suivre la branche distante comme ci-dessous:
git branch --track [local-branch-name] Origin/remote-branch-name
Vous devriez maintenant avoir le contenu de la branche github distante dans nom-branche-locale.
Vous pouvez passer à ce nom de branche locale et commencer à travailler:
git checkout [local-branch-name]
Naviguez jusqu'au dossier de votre nouvel ordinateur que vous souhaitez télécharger depuis git sur git bash.
Utilisez la commande ci-dessous pour télécharger le code de la branche de votre choix
git clone 'git ssh url' -b 'Branch Name'
Il téléchargera le code de branche respectif.
Git clone et cd dans le nom du repo:
$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach
Basculez vers la branche (une page GitHub) que je veux:
$ git checkout -b gh-pages Origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from Origin.
Switched to a new branch 'gh-pages'
Et tirez la branche:
$ git pull
Already up-to-date.
ls:
$ ls
index.html params.json stylesheets
vous pouvez utiliser :
git clone <url> --branch <branch>
pour cloner/télécharger uniquement le contenu de la branche.
Cela m'a été particulièrement utile, car le contenu de ma branche était entièrement différent de celui de la branche principale (bien que ce ne soit généralement pas le cas). Par conséquent, les suggestions énumérées ci-dessus par d'autres personnes ne m'ont pas aidée et je finirais par obtenir une copie du maître même après avoir jeté un coup d'œil sur la branche et effectué un tirage git.
Cette commande vous donnerait directement le contenu de la branche. Cela a fonctionné pour moi.