Vorrei fornire una prospettiva diversa su cosa significhi effettivamente "git pull --rebase", perché a volte sembra perdersi.
Se hai mai usato Subversion (o CVS), potresti essere abituato al comportamento di "svn update". Se hai delle modifiche da impegnare e il commit fallisce perché sono state apportate modifiche a monte, "svn update". Subversion procede unendo le modifiche a monte con le tue, causando potenzialmente conflitti.
Quello che Subversion ha appena fatto è stato essenzialmente "pull --rebase". L'atto di riformulare le modifiche locali per renderle relative alla versione più recente è la parte "riequilibrante" di essa. Se prima del tentativo di commit fallito avevi eseguito "svn diff" e successivamente hai confrontato il diff risultante con l'output di "svn diff", la differenza tra i due diff è ciò che ha fatto l'operazione di rebasing.
La differenza principale tra Git e Subversion in questo caso è che in Subversion, le "tue" modifiche esistono solo come modifiche non impegnate nella tua copia di lavoro, mentre in Git hai delle commit effettive localmente. In altre parole, in Git hai biforcuto la storia; la tua storia e la storia a monte sono divergenti, ma hai un antenato comune.
Secondo me, nel caso normale di avere il tuo ramo locale semplicemente riflettendo il ramo a monte e facendo uno sviluppo continuo su di esso, la cosa giusta da fare è sempre "--rebase", perché è quello che stai facendo semanticamente . Tu e gli altri state tagliando via la storia lineare prevista di un ramo. Il fatto che qualcun altro abbia spinto leggermente prima del tuo tentativo di spinta è irrilevante, e sembra controproducente per ognuno di questi incidenti di tempismo comportare fusioni nella storia.
Se senti davvero il bisogno di qualcosa per essere un ramo per qualsiasi motivo, questa è una preoccupazione diversa secondo me. Ma a meno che tu non abbia un desiderio specifico e attivo di rappresentare i tuoi cambiamenti sotto forma di unione, il comportamento predefinito dovrebbe, secondo me, essere "git pull --rebase".
Ti preghiamo di considerare altre persone che hanno bisogno di osservare e comprendere la storia del tuo progetto. Vuoi che la storia sia disseminata di centinaia di fusioni in tutto il luogo o vuoi solo le poche fusioni selezionate che rappresentano reali fusioni di sforzi intenzionali di sviluppo divergente?