Come faccio a inviare un ramo Git locale al ramo principale nel telecomando?


468

Ho un ramo chiamato sviluppo nel mio repository locale e voglio assicurarmi che quando lo spingo all'origine sia unito all'origine / master. Attualmente, quando premo viene aggiunto a un ramo di sviluppo remoto.

Come posso fare questo?


C'è un motivo particolare in cui non vuoi unirlo localmente origine quindi inviarlo al telecomando?
Bhamby,

Penso che @galador significhi fondersi localmente in master- ma è un punto valido. Se è abbastanza stabile per il ramo principale di origine, sicuramente è abbastanza stabile per il tuo ramo principale!
Cascabel,

1
@Jefromi Sì, whoops, errore di battitura. -_-
bhamby

2
@Jefromi immagina di aver lavorato su qualcosa nel tuo padrone locale e hai fatto alcuni commit che non sono ancora pronti a spingere. Quindi si scopre che hai un compito urgente. Si crea una filiale locale dal master remoto, si lavora e si riportano le modifiche al master. Forse non è il modo migliore, ma è quello che mi è successo ed è quello che ho fatto. Ha funzionato perfettamente come previsto. Beh, avrei dovuto lavorare in un ramo locale separato in primo luogo, ma è doloroso nel culo ramificarsi tutto il tempo ed era troppo tardi.
pizzicato il

21
Sto spingendo un ramo di sviluppo verso un'app di test non pubblica su Heroku per vedere come funzionano le cose nell'ambiente di Heroku. Sicuramente non voglio unire il mio codice master, ma Heroku non eseguirà il codice a meno che non sia attivo masterall'interno dell'app. Questa è una richiesta perfettamente ragionevole con casi d'uso legittimi!
JacobEvelyn

Risposte:


813
$ git push origin develop:master

o, più in generale

$ git push <remote> <local branch name>:<remote branch to push into>

25
Non fare "git push origin: master" che può rimuovere il tuo ramo esistente o il telecomando
Mangirdas Skripka

48
True @MangirdasSkripka! Basta usaregit push origin head:master se non si desidera specificare il nome del ramo corrente :)
Francesc Rosas,

23
Buona idea @ FrancescRosàs, però è HEAD (maiuscolo).
smokku

@Mipadi se ho il permesso di mender, posso spostare questo
Neeraj Sharma

11
@NeerajSharma: non so cosa sia il permesso di mender, o cosa vuoi spostare.
mipadi

194

Come le persone menzionate nei commenti, probabilmente non vuoi farlo ... La risposta di mipadi è assolutamente corretta se sai cosa stai facendo.

Direi:

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

 


23
Solo per citare, ha un certo senso nella sua richiesta, sto usando quel caso per distribuire (spingere) il mio sviluppo al maestro Heroku
Fabiano Soriani,

5
Ancora una volta, questa tecnica è IMHO solo per utenti avanzati di git. Non che sia troppo difficile, richiede solo alle persone di capire cosa stanno facendo e perché funziona nel modo in cui funziona. Ognuno è libero di usare git a proprio piacimento, ma penso che seguire l'approccio che ho suggerito sia molto meglio per scopi educativi, specialmente per i neofiti. Pulire "rami dell'argomento" è il modo di iniziare, è possibile ottimizzare il flusso di lavoro in un secondo momento, se necessario.
Eugene Sajine,

1
In realtà è una cosa abbastanza comune da fare. Il ramo principale di solito è il ramo di distribuzione. Se due team divergono intenzionalmente il loro schieramento, allora è probabile che userete un ramo locale selezionato per la ciliegia per spingere le patch a monte. Ora potresti sostenere che i cambiamenti dovrebbero essere spinti a monte in un ramo e quindi uniti da lì a master, ma certamente non è strano farlo nell'altro modo, IMO.
dgatwood,

+1 Questo è il modo più logico per "costruire" una versione di produzione.
Ryan,

Come lo faresti se non volessi unirti allo sviluppo ma lo sviluppo è stato rinnovato per padroneggiare?
user239558

-1

Come estensione alla risposta di @ Eugene, un'altra versione funzionerà per inviare il codice dal repository locale al ramo master / sviluppo.

Passa al ramo "master":

$ git checkout master

Unisci dal repository locale al master:

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

Spingere per padroneggiare:

$ git push

-1

Seguire i passaggi seguenti per inserire il repository locale nel ramo Masterenter code here

$ git status

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.