Nel tentativo di raggiungere il git nirvana, sto passando la giornata a imparare come sfruttare il rebase per le situazioni in cui attualmente mi unisco.
Quando eseguo quello che considero un flusso git 101 (che spiegherò di seguito), devo farlo push --force
quando rimetto le mie modifiche all'origine.
Non sono l'unico - so che questo è un terreno coperto (vedere 1 , 2 , 3 , 4 , 5 ) e capisco le ragioni tecniche per cui è necessaria una forza. Il mio problema è questo --- ci sono molti (molti) post di blog che cantano le lodi di rebase e come ha cambiato le loro vite (vedi 1 , 2 , 3 , 4 per elencarne alcuni), ma nessuno di loro menziona che push --force
fa parte di il loro flusso. Tuttavia, quasi tutte le risposte alle domande di stackoverflow esistenti dicono cose come "sì, se vuoi riformulare, devi usare push --force
".
Dato il numero e la religiosità dei sostenitori del rebase, devo credere che l'uso di "push --force" non sia una parte intrinseca di un flusso di rebase, e che se uno deve spesso forzare le loro spinte, sta facendo qualcosa di sbagliato .
push --force
è una brutta cosa .
Quindi ecco il mio flusso. In che modo potrei ottenere gli stessi risultati senza una forza?
Semplice esempio
Due rami:
- v1.0 - un ramo di rilascio, contiene solo patch
- master - tutto per la prossima major release.
Ho alcuni commit di patch e alcuni commit per la prossima versione.
Vorrei incorporare le patch nel mio master in modo che non vadano perse per la prossima versione. Pre-illuminazione, avrei semplicemente:
git checkout master
git merge v1.0
Ma ora ci sto provando
git checkout master
git rebase v1.0
Quindi ora sono qui:
Tempo per:
git push
Niente da fare.