100 votes

Comment obtenir/copier proprement une branche git distante vers le dépôt local ?

Je veux une "copie" exacte d'une branche distante "copiée" sur une branche locale spécifique.

Disons, par exemple, qu'un membre de l'équipe a créé une fonctionnalité expérimentale, qu'il a enregistrée dans une branche appelée experiment sur le référentiel distant. Je veux pouvoir extraire une nouvelle branche sur mon dépôt local, et "copier" la branche sur le dépôt distant. experiment la branche, telle quelle, vers ma nouvelle branche.

Je ne veux pas le fusionner avec mon code - je veux complètement écraser mon code afin que je puisse avoir un regard propre sur ce qu'il a fait sur la branche "experiment".

Comment "récupérer" (récupérer/tirer/quoi que ce soit...) une branche distante que quelqu'un d'autre a commise dans le dépôt distant vers votre propre dépôt local, d'une manière qui n'essaie pas d'effectuer une fusion sur votre propre code local ?

168voto

eckes Points 17277

Si vous ne vous souciez pas de la fusion :

git reset --hard <remote>/<branch_name>

Cela fera exactement ce que vous voulez : pas de fusion, pas de rebasage, simplement mettre la branche locale exactement dans le même état que la branche distante.

Dans votre cas cependant, vous n'en avez pas besoin. Vous voulez créer un nuevo qui a le même état que la branche distante, donc spécifiez la branche distante lors de la création de la branche locale à l'aide de la commande git checkout :

git checkout -b <my_new_branch> <remote>/<branch_name>

Si vous voulez utiliser le même nom localement, vous pouvez l'abréger en :

git checkout <branch_name>

Vous utiliseriez git reset --hard si vous disposez déjà d'une branche locale (par exemple avec des modifications), supprimez toutes les modifications qui ont été apportées à la branche locale. vous et prendre à la place la version exacte de la branche distante.

Pour être sûr d'avoir le dernier état de la branche distante, utilisez git fetch <remote> avant de quitter ou de réinitialiser.

8voto

paulvantuyl Points 81

Je n'ai pas assez de représentants pour faire des commentaires, mais j'aimerais ajouter un exemple pour ceux qui ont encore des difficultés. Dans mon exemple, j'utilise Github comme télécommande et je copie la branche dans mon environnement/terminal de serveur Linux.

D'abord, vous voudrez exécuter git fetch Pour être sûr que vous êtes à jour.

En utilisant l'exemple de

git checkout -b <my_new_branch> <remote>/<branch_name>

Avec une branche distante nommée "picklerick"

J'ai couru

git checkout -b picklerick remotes/origin/picklerick

J'aurais probablement pu utiliser remote/picklerick pour mon chemin distant, mais cela a fonctionné pour moi.

7voto

daGo Points 488

Supposons que git remote sorties de commande origin en conséquence, alors

git fetch origin remote_branch_name:local_branch_name

créera une branche locale qui est une copie exacte d'une branche distante dont vous avez besoin.

EDIT : Il existe une autre solution plus moderne :

git switch remote_branch_name

la commande créera une branche locale avec le même nom que la branche distante spécifiée.

Prograide.com

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.

Powered by:

X