2010-04-15 15 views
10

E 'possibile unire le modifiche da un repo centrale per una filiale locale, senza dover impegnare/riporre le modifiche sul master ramo e nella verifica locale?modifiche merging git per sezione locale

Se sto lavorando sul ramo "lavoro" locale e ci sono alcuni cambiamenti uncommited, io uso la seguente procedura per ottenere gli aggiornamenti dal repository centrale nel mio ramo di lavoro.

Di solito non ci sono modifiche non impegnate in "lavoro" e quindi ometto i passaggi di scorta.

Quello che mi piacerebbe davvero è qualcosa di simile al seguente:

git pull master (updates master while work branch is checked out and has changes) 
git rebase master (rebases the updates into work branch uncommited changes are still safe) 

C'è qualcosa di più facile di quello che attualmente faccio?

+0

mi stupisce che questo è ancora così difficile da fare in Git. come utente SVN di lunga data, questa funzionalità incorporata (che sembra unire le modifiche remote in una copia di lavoro modificata) è una cosa su cui il mio team ha fatto affidamento quotidianamente. – Spongman

risposta

12

Si può fare (sul ramo work):

git stash 
git pull --rebase origin master 
git stash apply 

git pull --rebase sia tira modifiche remote e rebases le modifiche locali in cima quelli remoti. Cioè essenzialmente fa quello che mostri nella tua sceneggiatura.

modifiche locali, ovviamente, devono essere impegnati o messo al sicuro il merge o rebase (perché se conflitto di unione accade, i cambiamenti in conflitto dovrebbero essere impegnati per voi per risolvere loro - ma dove vuoi le modifiche locali andare allora?)

Quando in seguito si decide di aggiornare master e per unire work ramo con esso, non causerà problemi, dal momento che i cambiamenti tirati sono gli stessi. Quindi non è necessario aggiornare master quando si apportano modifiche.

+1

Grazie a @Pavel e @Pran. Funziona, quello che dovevo realizzare è che non era necessario aggiornare il master a questo punto. Sarà aggiornato quando il lavoro viene fuso in master. – ScottS

+0

Funziona. Grazie! –

2

non credo che si può tirare se si dispone di modifiche non.

Pertanto, si potrebbe fare qualcosa sulla falsariga di:

git stash 
git pull --rebase <remote> <branch> # Calls rebase instead of merge. 
git stash pop 
0

Forse le cose sono cambiate dal 2010, ma si può tirare da un telecomando, anche se si dispone di modifiche uncommited. Le modifiche locali rimarranno non impegnate, quindi puoi differire o unirle a tuo piacimento.

git pull origin master 

testato con git versione 1.9.5.msysgit.1

Da this SO answer

Problemi correlati