Lo farei solo se il ramo di funzione è non in procinto di essere unito in master. Suggerirei di unire regolarmente upstream al ramo delle funzionalità per ridurre al minimo il lavoro richiesto per le fusioni durante e dopo lo sviluppo. Tuttavia, se ti unisci indietro, non ha senso fondersi in un modo e immediatamente nell'altro senso. La semplice fusione in master rende più chiara la tua intenzione.
Un altro motivo per cui unire a monte il ramo di funzionalità è, a volte, ad esempio, dopo che un'altra funzionalità è stata incorporata in upstream, i rami sono così divergenti che ho bisogno di almeno un commit dopo l'unione per rendere tutto lavorare di nuovo. Questo è qualcosa che dovrebbe essere fatto sul ramo delle funzionalità.
Poiché tutte queste operazioni sono veloci ed economiche, di solito cerco di unirmi al master e se vedo che questo è solo un lavoro più del previsto, abortisco e faccio l'unione al contrario.
Oh, e per quanto riguarda la perdita di cose: non perderete mai qualcosa in un modo o nell'altro tranne che rimuovete voi stessi. Git non getterà via le modifiche tranne che lo dirai a (rimuovere cose durante un'unione, usando una strategia di fusione non predefinita, ecc.).
Rebase riscrive la cronologia, quindi la mia comprensione è che va bene solo per la prima volta, fino a quando il mio locale cambia terreno in repository.È corretto? – user776686
Sì, se i commit sono stati inseriti, rebase non deve essere utilizzato (ci sono eccezioni, ad esempio, se sei sicuro che nessun altro ha recuperato e utilizzato il tuo ramo, allora potresti usare rebase e fare un push forzato). – dunni
Non vedo un problema nella ridefinizione dei rami delle funzionalità. Soprattutto perché nessuno si sarebbe separato da loro. Ma se vuoi essere più attento puoi spingere il cambiamento come nuovo ramo. Tuttavia la maggior parte degli strumenti (come Gerrit o Github PR) consente/prevede di aggiornare i rami esistenti. – eckes