Supponiamo che abbia un ramo principale e un ramo di funzionalità. Ho fuso il ramo principale nel ramo di funzionalità molte volte, ma ho avuto solo pochi conflitti di fusione molto minori. Voglio ripulire la cronologia in modo che alla fine ci sia un'unica unione. Qual è il metodo migliore per farlo?Combinare le unioni in un'unica unione
risposta
Hai esaminato git rebase
?
git co -b temp_feature feature
git rebase master
Questo dovrebbe ignorare le unioni, ma si dovrà ri-risolvere i conflitti. Crea anche il ramo temp_feature per un più facile ritorno ma lo stesso potrebbe essere ottenuto con reflog.
(Risposta sbagliata sotto: questo creerà singolo commit, non una sola unione: - /)
penso che il più semplice è quello di fare seguente:
git co master
git merge --squash feature
Questo creerà singolo commit dall'intero ramo delle funzionalità. Se non si desidera mantenere al ramo della funzione fare:
git branch -D feature
Si può fare un rebase interattivo per raggiungere questo obiettivo, ma si dovrebbe farlo solo se non avete ancora condiviso che la storia con chiunque altro. Ciò significa in pratica che dovresti farlo solo se non hai fatto un git push
a un repo condiviso.
Suoni come se si desidera cherrypick i commit non-merge per il ramo di funzionalità in ramo clean-feature, quindi infine unire il ramo clean-feature con l'ultimo master (qualunque cosa sia). Puoi usare rebase per accelerare parte di quella cherrypicking, che sfortunatamente non conosco un buon modo per farlo in un batter d'occhio, dato che non è qualcosa che faccio molto spesso. Sarebbe utile se hai una GUI che ti permette di selezionare più commit per essere cherrypicked in una volta.
Edit: Questa sarebbe una soluzione più concreta: How to cherry pick a range of commits and merge into another branch
- 1. Confronto tra le unioni discriminate
- 2. Come posso appiattire le unioni in una cronologia lineare?
- 3. Unione di unioni discriminate con tipi di record
- 4. Le unioni discriminate possono riferirsi a vicenda?
- 5. git rebase "--preserve-merges --onto" non conserva le unioni
- 6. Unioni temporizzate in C++ 11
- 7. Come posso configurare Mercurial per usare WinMerge per le unioni, sotto cygwin?
- 8. Come trovare l'ultima unione in git?
- 9. Come combinare le sequenze in clojure?
- 10. Combinare le variabili insieme in un elenco
- 11. Come combinare le espressioni str.replace() in javascript?
- 12. DBIx :: Class fa unioni?
- 13. Come combinare le librerie condivise?
- 14. Come ingannare git-svn per riconoscere le unioni fatte con svn?
- 15. log git --follow, mostra tutti i commit comprese le unioni
- 16. Come gestire correttamente le unioni quando si esegue un GIT PULL in Visual Studio
- 17. mercurial - vedere le modifiche sul ramo ignorando tutti i commit di unione
- 18. Unione/unione di matrici in C#
- 19. Perché Rust non ha unioni?
- 20. Quali standard consentono le strutture anonime e le unioni in C e C++?
- 21. Unione manuale su GIT
- 22. Unioni in C++ 11: il costruttore predefinito sembra essere cancellato
- 23. uso del e parola chiave in F # in unioni discriminati
- 24. Perché esiste una discrepanza nelle dimensioni tra strutture e unioni?
- 25. Unione anonima e unione normale
- 26. XPath: è possibile combinare le query
- 27. come combinare django plus gevent le basi?
- 28. Combinare le definizioni nei documenti Swagger
- 29. Come combinare la bussola con le benedizioni?
- 30. Mostra differenze di non unione per due commit in git
Quando si dice ripulire la storia, è necessario essere più specifici. Se si desidera rimuovere le unioni dalla linea principale alla funzione, è necessario decidere come deve essere il ramo della funzione con quelle rimosse. Ad esempio, se alcuni lavori nel ramo della funzione dipendono dalle modifiche apportate alla linea principale (e successivamente unite nel ramo della funzionalità), la rimozione delle unioni causerà la mancata compilazione del ramo della funzione in quanto dipende dal codice rimosso. –
@KevinBallard: questo è un punto valido. In alcuni casi, potresti voler spostare il ramo in alto. Non sono troppo preoccupato per questo, tuttavia, per questa domanda, voglio solo assicurarmi che il ramo si ricongiuda solo una volta – Casebash