J'ai un projet avec plusieurs branches. Je les ai poussés vers GitHub , et maintenant que quelqu'un d'autre travaille sur le projet, je dois retirer leurs branches de GitHub. Cela fonctionne bien en master. Mais disons que quelqu'un a créé une branche xyz
. Comment puis-je tirer une branchexyz
de GitHub et la fusionner en branche xyz
sur mon localhost
?
J'ai en fait ma réponse ici: pousser et tirer des branches dans Git
Mais je reçois une erreur "! [Rejeté]" et quelque chose sur "pas d'avance rapide".
Aucune suggestion?
git fetch origin --force
", mais veuillez lire la documentation avant de le faire.Réponses:
C'est parce que Git ne peut pas fusionner les modifications des branches dans votre master actuel. Supposons que vous ayez extrait la branche
master
et que vous souhaitiez fusionner dans la branche distanteother-branch
. Lorsque vous faites cela:Git fait essentiellement ceci:
Autrement dit, un
pull
est juste unfetch
suivi d'unmerge
. Cependant, lorsquepull
-ing, Git ne fusionnera queother-branch
s'il peut effectuer une fusion à avance rapide . Une fusion à avance rapide est une fusion dans laquelle le chef de la branche dans laquelle vous essayez de fusionner est un descendant direct du chef de la branche dans laquelle vous souhaitez fusionner. Par exemple, si vous avez cet arbre d'historique, la fusionother-branch
entraînerait une fusion rapide:Cependant, ce ne serait pas une fusion rapide:
Pour résoudre votre problème, récupérez d' abord la branche distante:
Ensuite, fusionnez-le dans votre branche actuelle (je suppose que c'est le cas
master
) et corrigez tout conflit de fusion:la source
git fetch -f
a résolu mon problème! Merci!xzy
localemaster
, ce qui n'est pas ce qu'impliquait la question d'origine; "Comment puis-je extraire la branche xyz de GitHub et la fusionner dans la branche xyz sur mon hôte local?"Suivez simplement vos succursales distantes de manière explicite et un simple
git pull
fera exactement ce que vous voulez:Ce dernier est une opération locale.
Ou encore plus en accord avec la documentation GitHub sur la fourche :
la source
Vous pouvez tirer une branche vers une branche avec les commandes suivantes.
Lorsque vous êtes sur la branche principale, vous pouvez également d'abord extraire une branche comme:
Cela crée une nouvelle branche, "xyz", à partir du maître et la vérifie directement.
Ensuite, vous faites:
Cela tire la nouvelle branche vers votre
xyz
branche locale .la source
La meilleure façon est:
la source
git fetch
va récupérer la dernière liste de branches.Maintenant vous pouvez
git checkout MyNewBranch
Terminé :)
Pour plus d'informations, consultez la documentation: git fetch
la source
Je ne suis pas sûr de bien comprendre le problème, mais tirer une branche existante se fait comme ça (au moins ça marche pour moi :)
Cela suppose que votre succursale locale est créée à partir de l'origine / BRANCH.
la source
Cela m'a aidé à obtenir une branche distante avant de la fusionner dans d'autres:
la source
Autrement dit, si vous voulez tirer de GitHub la branche
the_branch_I_want
:la source
Habituellement, si vous n'avez qu'un repo affecté à votre code, le gitreponame serait l'origine.
Si vous travaillez sur deux repo comme un local et un autre pour remote comme vous pouvez vérifier la liste des repo depuis git remote -v . cela montre combien de dépôts sont affectés à votre code actuel.
BranchName doit exister dans le gitreponame correspondant.
vous pouvez utiliser les deux commandes suivantes pour ajouter ou supprimer des repo
la source
vous pouvez aussi faire
corriger les conflits de fusion, le cas échéant
-r est pour rebase. Cela vous fera une structure de branche
à
Cela conduira à une histoire plus propre. Remarque: Si vous avez déjà poussé votre autre branche vers l'origine (ou toute autre télécommande), vous devrez peut-être forcer la poussée de votre branche après le rebase.
la source
J'ai fait
Au lieu de
Comme suggéré par @innaM. Quand j'ai utilisé la version en amont, il a dit 'fatal: Pas un nom d'objet valide:' upstream / remote_branch_name ''. Je n'ai pas fait
git fetch origin
comme un commentaire suggéré, mais plutôt simplement remplacéupstream
parorigin
. Je suppose qu'ils sont équivalents.la source
pour tirer la branche de GitHub, vous pouvez utiliser
Assurez-vous que le nom de la branche est exactement le même.
la source