Comment «tirer» d'une branche locale dans une autre?


231

Cela semble si simple, mais je ne peux pas le comprendre. J'ai fait une branche expérimentale il y a quelque temps, et maintenant j'aimerais retirer tous les changements qui se sont produits sur master depuis que je l'ai fait. Tout cela est local. Je veux passer du maître local au local my_branch, mais je ne peux pas le faire. Cela ne semble pas fonctionner, me disant que master n'est pas un dépôt git:

git pull master

Réponses:


339

vous devez dire à git d'où vous voulez vous extraire, dans ce cas du répertoire / dépôt actuel:

git pull . master

mais lorsque vous travaillez localement, vous appelez généralement simplement la fusion (tirez en interne les appels à la fusion):

git merge master

1
J'aime git pull . masterparce que je pense qu'il vérifiera également s'il y a quelque chose de nouveau d'origine. Est-ce vrai?
Josiah Yoder

1
@JosiahYoder no, pull .indique spécifiquement à Git de tirer du référentiel situé dans .(c'est- à -dire le répertoire / référentiel actuel). originest juste un raccourci pour "quel que soit l'emplacement du référentiel défini dans le .git/configfichier (généralement configuré automatiquement lors du clonage d'un référentiel)
knittl

1
Oh! Alors git pull . master, tirerait-il du référentiel local au lieu de l'origine? (Pas de récupération depuis l'origine!?) Y a-t-il un avantage de git pull . masterplus git merge masteralors?
Josiah Yoder

2
@JosiahYoder oui exactement, il "tirerait" du référentiel local au lieu du référentiel d'origine. Aucune récupération n'est effectuée (car tout depuis le référentiel local est déjà là!). Il n'y a aucun avantage - les deux commandes font plus ou moins la même chose. Si vous effectuez des avancées rapides, vous pouvez utiliser push . origin/branch:branch(pas tirer) pour mettre à jour les branches locales, sans les extraire d'abord.
knittl

Je te loue. Par la puissance de Greyskull!
R Claven

45

Ce que vous recherchez, c'est la fusion.

git merge master

Avec pullvous, récupérez les modifications d'un référentiel distant et fusionnez-les dans la branche actuelle.


38

Assez vieux poste, mais cela pourrait aider quelqu'un de nouveau à git.

J'irai avec

git rebase master
  • historique des journaux beaucoup plus propre et aucune validation de fusion (si cela est fait correctement)
  • besoin de gérer les conflits, mais ce n'est pas si difficile.

1
Il existe certainement de nombreuses façons pour une équipe de développement de gérer ses processus de branchement. Personnellement, j'utilise git depuis 8 ans, et je n'ai jamais eu à rebaser. J'utilise toujours la fusion et elle a toujours répondu à mes besoins. Avec le rebase, tout comme la fusion, des scénarios peuvent survenir où git ne peut pas automatiquement décider du résultat correct de la "fusion" de deux ensembles de modifications. Concernant le point que vous avez fait sur un historique de commit "plus propre". Personnellement, ma préférence est de conserver tout l'historique des validations, juste au cas où j'aurais besoin de faire une "validation archéologique" (comme cela arrive souvent!)
user3441604

-1

Si vous êtes à la recherche d'un tout nouveau pull provenant d'une autre branche comme du local au master, vous pouvez suivre cela.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.