Di recente ho avuto una discussione con persone assolutamente contrarie a una strategia di ribasatura dei rami delle funzioni su GIT. Sembra essere uno schema accettato per usare rebase solo per filiali locali e private, ma non usarlo mai quando ci sono diverse persone che lavorano su una stessa funzione e ramo, come da questa cosiddetta "Regola d'oro del rifacimento" (come spiegato qui: https : //www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview )
Sono solo sorpreso che ci sia consenso su questo. Ho lavorato 3 anni con una strategia di rebasing completa, con circa 20 sviluppatori che lavorano insieme e indovina un po ', ha funzionato.
Il processo è sostanzialmente:
- Crei il tuo ramo delle caratteristiche, chiamiamolo "myfeature" e spingilo su origin / myfeature
- Altre persone possono verificarlo e lavorarci su
- A volte puoi rifarlo dal master: da "myfeature", git rebase origin / master ; e poi sì, devi forzarlo.
- Cosa succede quando altre persone vogliono spingere i propri impegni? Lo ribattevano semplicemente: git rebase origin / myfeature . Quindi ora sono in rapido avanzamento e possono spingerlo senza forzare.
L'unico principio da rispettare è che il ramo delle caratteristiche sia di proprietà di qualcuno . Il proprietario è l'unico che può spingere-forza.
Quindi, lo ammetto: non appena c'è una forza di spinta, c'è il rischio di fare errori. È vero. Ma ci sono anche molti modi per recuperare dagli errori e, in 3 anni di sviluppo, non ho visto molti errori di spinta forzata e quando è successo abbiamo sempre trovato il modo di recuperare correttamente.
Quindi, perché questa "Regola d'oro del rebase" è così ampiamente accettata? C'è qualcos'altro che mi è mancato? Capisco che richiede un minimo di organizzazione (ogni strategia richiede una certa organizzazione), ma funziona.