web-dev-qa-db-fra.com

Que se passe-t-il lorsque je fais git pull Origin master dans la branche develop?

Disons que j'ai une branche de sujet privée appelée develop avec 2 commits avant master.

Qu'est-ce que git pull Origin master faire?

Tout tirer du maître distant dans le développement local et le fusionner? Tirez tout dans la branche principale locale et fusionnez-le?

Et existe-t-il un moyen de mettre à jour le maître depuis le développement sans git checkout master première?

54
e-satis

git pull Origin master tire la branche principale de la télécommande appelée Origin dans votre branche actuelle. Cela n'affecte que votre branche actuelle, pas votre branche principale locale.

Cela vous donnera une histoire ressemblant à ceci:

- x - x - x - x (develop)
   \         /
    x - x - x (Origin/master)

Votre branche maîtresse locale n'est pas pertinente à cet égard. git pull est essentiellement une combinaison de git fetch et git merge; il récupère la branche distante puis la fusionne dans votre branche actuelle. C'est une fusion comme les autres; ça ne fait rien de magique.

Si vous souhaitez mettre à jour votre branche principale locale, vous n'avez pas d'autre choix que de le vérifier. Il est impossible de fusionner dans une branche qui n'est pas extraite, car Git a besoin d'un arbre de travail pour effectuer la fusion. (En particulier, il est absolument nécessaire pour signaler les conflits de fusion et vous permettre de les résoudre.)

Si vous savez que tirer dans master serait une avance rapide (c'est-à-dire que vous n'avez pas de commits dans votre branche master locale qui ne sont pas dans le master d'origine), vous pouvez contourner, comme décrit dans cette réponse =.

81
mrj

Une fois que vous vous êtes engagé, vous modifiez votre branche en utilisant

git add -A
git commit -m <message>

Vous pouvez alors faire:

git pull Origin master

dans votre branche et cela gardera vos commits au-dessus du pull principal. Votre branche sera désormais à égalité avec master + vos commits au top. Vous pouvez donc désormais:

git Push

et git poussera vos modifications, ainsi que le maître s'engage dans votre branche. Vous pouvez facilement fusionner cela en master sur Github.

4
Vlad