177 votes

git push vers une branche spécifique

Même après avoir lu cette question : git-push-current-branch J'ai encore du mal à comprendre comment je dois rédiger mon git push commande. Comme indiqué dans le lien de la question, ce n'est pas clair dans la documentation.

Je voudrais utiliser mon exemple du "monde réel". Voici ce que je vois lorsque j'exécute la commande git status au niveau supérieur de ma branche :

Sur la branche amd_qlp_tester

Votre branche est en avance sur 'origin/amd_qlp_tester' de 5 commits.

etc...

Le nom de ma branche est amd_qlp_tester mais elle a été "branchée" à partir de la branche principale (si je me trompe dans les termes, c'est à cause de mon expérience du SVN). Mais il y a aussi le nom origin/amd_qlp_testser

Alors, comment formuler ma commande "push" ?

S'agit-il de l'un des éléments suivants ?

git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push

270voto

Imranmadbar Points 2326

Si votre branche locale et votre branche distante portent le même nom, vous pouvez le faire :

git push origin branchName

Si le nom de la branche locale et de la branche distante est différent, vous pouvez le faire :

git push origin localBranchName:remoteBranchName

117voto

Petr Mensik Points 8588

git push origin amd_qlp_tester vous conviendra. Si vous tapez simplement git push alors la télécommande de la branche actuelle est la valeur par défaut.

La syntaxe de push ressemble à ceci - git push <remote> <branch> . Si vous regardez votre télécommande en .git/config vous verrez une entrée [remote "origin"] qui spécifie l'url du référentiel. Ainsi, dans la première partie de la commande, vous indiquerez à Git où trouver le dépôt pour ce projet, puis vous spécifierez simplement une branche.

10voto

torek Points 25463

Les réponses à la question que vous avez mise en lien concernent la configuration de git de manière à ce que vous puissiez entrer des données très courtes. git push et leur faire faire ce que vous voulez. Ce qui est très bien, si vous savez ce que vous voulez et comment l'épeler en Git-Ese, mais vous êtes nouveau dans git ! :-)

Dans votre cas, Réponse de Petr Mensik est la (enfin, "une") bonne solution. Voici pourquoi :

La commande git push _remote_ des racines dans votre .git/config pour trouver le fichier nommé "remote" (par ex, origin ). Le fichier de configuration contient les listes suivantes

  • l'endroit (en termes d'URL) où se trouve cette télécommande (par ex, ssh://_hostname_/_path_ )
  • où vont les poussées, si elles sont différentes
  • ce qui est poussé, si vous n'avez pas dit quelle(s) branche(s) pousser
  • ce qui est recherché lorsque vous exécutez git fetch _remote_

Lorsque vous avez cloné le repo pour la première fois, Git a défini des valeurs par défaut pour certaines d'entre elles. L'URL est celle à partir de laquelle vous avez cloné et les autres valeurs, qu'elles soient définies ou non, sont toutes des valeurs par défaut "raisonnables" ... ou, hmm, sont ils ?

Le problème est que les gens ont changé d'avis, au fil du temps, sur ce qui est "raisonnable". Ainsi, aujourd'hui (selon votre version de git et si vous avez configuré les choses en détail), git peut imprimer un grand nombre d'avertissements sur les changements de valeurs par défaut dans le futur. Ajouter le nom de la "branche à pousser"- amd_qlp_tester -(1) la ferme et (2) ne pousse que cette seule branche.

Si vous voulez pousser plus loin, vous pouvez le faire avec :

git push origin

ou même :

git push

mais si cela fait ce que vous voulez, cela dépend si vous êtes d'accord avec les "premiers auteurs de git" pour dire que les valeurs par défaut d'origine sont raisonnables, ou avec les "derniers auteurs de git" pour dire que les valeurs par défaut d'origine ne sont pas raisonnables. Donc, quand vous voudrez faire tous les trucs de configuration (éventuellement), voyez la question (et les réponses) que vous avez mise en lien.

Quant au nom origin/amd_qlp_tester en premier lieu : c'est en fait une entité locale (un nom conservé dans votre repo), même si elle est appelée "branche distante". C'est la meilleure estimation de git sur "l'endroit où amd_qlp_tester est là-bas". Git le met à jour lorsqu'il le peut .

4voto

code_fodder Points 984

J'aimerais ajouter une réponse actualisée - maintenant que j'utilise git depuis un certain temps, je trouve que j'utilise souvent les commandes suivantes pour faire du push (en utilisant la question originale comme exemple) :

  • git push origin amd_qlp_tester - pousser vers la branche située dans la partie distante appelée origin sur la succursale à distance appelée amd_qlp_tester .
  • git push -u origin amd_qlp_tester - la même chose que la précédente, mais définit l'amont reliant la branche locale à la branche distante, de sorte que la prochaine fois, il suffira d'utiliser git push/pull s'il n'est pas déjà lié (il ne faut le faire qu'une seule fois).
  • git push - Une fois que vous avez défini l'amont, vous pouvez utiliser cette version plus courte.

Note -u est la version courte de --set-upstream - ils sont identiques.

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