Même après avoir lu cette question: git-Push-current-branch , j'ai toujours du mal à comprendre comment écrire ma commande git Push. Comme mentionné dans le lien de la question, ce n'est pas clair dans la documentation.
J'aimerais utiliser mon exemple du "monde réel". Voici ce que je vois lorsque je fais une 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...
Donc, mon nom de branche est AMD_qlp_tester
mais il a été "dérivé" de la branche principale (si les termes me manquent, c'est à cause de mon arrière-plan SVN). Mais il y a aussi le nom `Origin/AMD_qlp_testser '
Alors, comment puis-je exprimer ma commande Push?
Est-ce l'un de ceux-ci:
git Push Origin/AMD_qlp_tester?
git Push Origin AMD_qlp_tester?
git Push AMD_qlp_tester?
git Push origin?
git push?
git Push Origin AMD_qlp_tester
travaillera pour vous. 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 dans le fichier .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 référentiel pour ce projet, puis vous spécifiez simplement une branche.
Si votre branche locale et votre branche distante portent le même nom, vous pouvez simplement le faire:
git Push Origin branchName
Lorsque le nom de votre branche locale et distante est différent, vous pouvez simplement le faire:
git Push Origin localBranchName:remoteBranchName
Les réponses à la question que vous avez liée concernent la configuration de git afin que vous puissiez entrer des commandes très courtes git Push
et les laisser faire ce que vous voulez. Ce qui est génial, si vous savez ce que vous voulez et comment épeler cela dans Git-Ese, mais que vous êtes novice dans git! :-)
Dans votre cas, réponse de Petr Mensik est celui (bien, "a") correct. Voici pourquoi:
La commande git Push remote
trouve des racines dans votre fichier .git/config
pour trouver le nom "distant" nommé (par exemple, Origin
). Le fichier de configuration liste:
ssh://hostname/path
)git fetch remote
Lorsque vous avez cloné le référentiel pour la première fois, quelle que soit sa position, définissez les valeurs par défaut de certaines d'entre elles. L'URL est ce que vous avez cloné et le reste, s'il est défini ou non défini, toutes les valeurs par défaut "raisonnables" ... ou, hmm, sont elles?
Le problème, c’est que les gens ont changé d’avis au fil du temps sur ce qui est "raisonnable". Alors maintenant (selon votre version de git et si vous avez configuré les choses en détail), git peut afficher de nombreux avertissements concernant les modifications par défaut des modifications par défaut. Ajouter le nom de la "branche à pousser" —AMD_qlp_tester
— (1) la ferme, et (2) ne pousse que cette branche.
Si vous voulez pousser plus facilement, 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 git" sur le fait que les valeurs par défaut d'origine sont raisonnables ou sur les "auteurs ultérieurs git" que les valeurs d'origine ne sont pas raisonnables. Donc, lorsque vous voulez faire tout le travail de configuration (éventuellement), consultez la question (et les réponses) à laquelle vous êtes lié.
En ce qui concerne le nom Origin/AMD_qlp_tester
en premier lieu: il s’agit en fait d’une entité locale (un nom conservé dans votre référentiel), même s’il s’appelle une "branche distante". La meilleure hypothèse de git est "où AMD_qlp_tester
est là-bas". Git le met à jour quand il le peut .
J'aimerais ajouter une réponse mise à jour - maintenant que j'utilise git depuis un moment, je constate que j'utilise souvent les commandes suivantes pour faire des push (en utilisant la question d'origine comme exemple):
git Push Origin AMD_qlp_tester
- Envoie à la branche située à Origin appelée AMD_qlp_testergit Push -u Origin AMD_qlp_tester
- identique au dernier, mais définit la liaison en amont reliant la branche locale à la branche distante de sorte que vous puissiez utiliser la prochaine fois git Push/pull
s'il n'est pas déjà lié (vous n'avez qu'à le faire une fois).git Push
- Une fois que vous avez défini l'amont, vous pouvez simplement utiliser cette version plus courte.Note L'option -u
est la version abrégée de --set-upstream
- elles sont identiques.