Comment puis-je pousser une branche Git locale vers une branche principale dans la télécommande?

468

J'ai une branche appelée develop dans mon référentiel local, et je veux m'assurer que lorsque je la pousse vers origin, elle est fusionnée avec origin / master. Actuellement, lorsque je pousse, il est ajouté à une branche de développement à distance.

Comment puis-je faire ceci?

picardo
la source
Y a-t-il une raison particulière pour laquelle vous ne voulez pas le fusionner localement originet le pousser vers la télécommande?
bhamby
Je pense que @galador signifie fusionner localement en master- mais c'est un point valable. S'il est suffisamment stable pour la branche principale d'origine, alors il est sûrement suffisamment stable pour votre branche principale!
Cascabel
1
@Jefromi Ouais, oups, faute de frappe. -_-
bhamby
2
@Jefromi imagine que vous travailliez sur quelque chose dans votre maître local et que vous avez effectué des validations qui ne sont pas encore prêtes à être poussées. Ensuite, il s'avère que vous avez une tâche urgente. Vous créez une branche locale à partir du maître distant, travaillez et repoussez vos modifications vers le maître. Ce n'est peut-être pas le meilleur moyen mais c'est ce qui m'est arrivé et c'est ce que j'ai fait. Cela a fonctionné parfaitement comme prévu. Eh bien, j'aurais dû travailler dans une branche locale distincte en premier lieu, mais c'est dur de se ramifier tout le temps et il était trop tard.
pinkeen
21
Je pousse une branche de développement vers une application de test non publique sur Heroku pour voir comment les choses fonctionnent dans l'environnement de Heroku. Je ne veux certainement pas fusionner mon code master, mais Heroku ne l'exécutera que s'il est activé masterdans l'application. Il s'agit d'une demande parfaitement raisonnable avec des cas d'utilisation légitimes!
JacobEvelyn

Réponses:

813
$ git push origin develop:master

ou, plus généralement

$ git push <remote> <local branch name>:<remote branch to push into>
mipadi
la source
25
Ne faites pas "git push origin: master" qui peut supprimer votre branche existante de la télécommande
Mangirdas Skripka
48
Vrai @MangirdasSkripka! Utilisez simplement git push origin head:mastersi vous ne voulez pas spécifier le nom de la branche actuelle :)
Francesc Rosas
23
Bonne idée @ FrancescRosàs, c'est bien HEAD (lettres majuscules).
smokku
@Mipadi si j'ai la permission de raccommoder, puis-je déplacer ceci
Neeraj Sharma
11
@NeerajSharma: Je ne sais pas ce qu'est l'autorisation de réparateur, ni ce que vous voulez déplacer.
mipadi
194

Comme les gens l'ont mentionné dans les commentaires, vous ne voulez probablement pas faire ça ... La réponse de mipadi est absolument correcte si vous savez ce que vous faites.

Je dirais:

git checkout master
git pull               # to update the state to the latest remote master state
git merge develop      # to bring changes to local master from your develop branch
git push origin master # push current HEAD to remote master branch

 

Eugene Sajine
la source
23
Juste pour mentionner, il y a un certain sens dans sa demande, j'utilise ce cas pour déployer (pousser) mon développement vers le maître Heroku
Fabiano Soriani
5
Encore une fois, cette technique est à mon humble avis pour les utilisateurs avancés de git uniquement. Non pas que ce soit trop difficile, cela demande simplement aux gens de comprendre ce qu'ils font et pourquoi cela fonctionne de la façon dont cela fonctionne. Tout le monde est libre d'utiliser git à sa guise, mais je pense que suivre l'approche que j'ai suggérée est beaucoup mieux à des fins éducatives, en particulier pour les nouveaux arrivants git. Nettoyer les "branches thématiques" est le moyen de commencer, vous pouvez optimiser votre flux de travail plus tard si nécessaire.
Eugene Sajine
1
C'est en fait une chose assez courante à faire. La branche principale est généralement votre branche de déploiement. Si deux équipes divergent intentionnellement leur déploiement, il y a de fortes chances que vous utilisiez une branche locale triée sur le volet pour pousser les correctifs en amont. Maintenant, vous pourriez faire valoir que les modifications devraient être poussées en amont vers une branche, puis fusionnées à partir de là en maître, mais ce n'est certainement pas si étrange de le faire dans l'autre sens, OMI.
dgatwood
+1 C'est le moyen le plus logique de «créer» une version de production.
Ryan
Comment le feriez-vous si vous ne voulez pas fusionner avec develop mais avoir développé rebasé pour maîtriser?
user239558
-1

Dans le prolongement de la réponse de @ Eugene, une autre version qui fonctionnera pour pousser le code du dépôt local vers la branche master / develop.

Passer à la branche «maître»:

$ git checkout master

Fusion du référentiel local au master:

$ git merge --no-ff FEATURE/<branch_Name>

Poussez pour maîtriser:

$ git push
RAM
la source
-1

Suivez les étapes ci-dessous pour pousser le dépôt local dans la branche principaleenter code here

$ git status

Test Shiv
la source