Git Workflow - trasformando un repository locale in uno "centrale"

2

Ho un repository locale con un progetto di giocattoli che è risultato essere più serio di quanto pensassi. Quindi, da un singolo ramo di sviluppo in cui ho incautamente commesso, ho iniziato a usare succursali un po 'come nel famoso link

Ora vorrei avere un repository remoto "centrale" che possa spingere il mio albero di sviluppo e master.

Il primo problema è: come faccio a fare questo. Devo inizializzare un repository vuoto sul mio server e fare riferimento a questo repository come origine remota nel mio repository locale?

Devo prima creare i rami nel repository remoto o è sufficiente solo per inviarli?

In secondo luogo i primi commit nel mio repository locale sono davvero scomodi, quindi mi piacerebbe accumulare un sacco di quei primi commit in uno, sia nel modo di --no-ff o come ho capito per schiacciarli.

Come ho capito, funziona solo con un ramo intermedio. In questo momento ho 2 rami " develop " e " master " nel mio repository locale. Ho trovato due idee su come "cambiare la storia"

Creo due rami sviluppa-schiacciati e master-schiacciati . Rebase i miei rami originali a quelli mentre si schiacciano i commit che voglio perdere. Se i rami -squashed sono equivalenti al master originale e sviluppano rami, posso eliminare quelli originali e "rinominare" i rami * - schiacciati in master e sviluppo .

Finalmente posso spingere master e sviluppare nel repository remoto .

  • È questa la strada da percorrere?

  • Come posso assicurarmi che con il rebasing, entrambi i rami master e develop hanno entrambi la stessa storia fino al punto in cui ho iniziato a seguire il " successo modello git branching "? (Hanno la stessa storia fino a quel momento al momento).

posta wirrbel 13.03.2013 - 11:59
fonte

1 risposta

7
  1. Devi prima ripulire la cronologia, piuttosto che creare il repository centrale sul server. Perché una volta pubblicata la cronologia, non potrai recuperarla.
  2. Se i rami hanno una storia comune per tutto il periodo che desideri modificare, allora avrai solo un ramo uno "* -squashed". Avere develop ha senso solo dal punto in cui differisce effettivamente da master .
  3. Dai un'occhiata al comando git filter-branch . Dovrebbe essere in grado di fare tutto il ribasso per te facilmente (per quanto riguarda tutto ciò che riguarda il ramo del filtro può essere chiamato facile, ma in ogni caso ti farà risparmiare molto lavoro). L'operazione che vorrete fare è fondamentalmente semplice; solo per il primo commit si desidera mantenere la sostituzione del genitore con quello pulito.
  4. Probabilmente non mi preoccuperei a meno che non ci sia qualcosa che non puoi pubblicare legalmente o è davvero molto imbarazzante dato che qualcuno dovrebbe avere un lotto di tempo libero per guardare effettivamente i primi storia.
  5. Basta inizializzare il repository vuoto sul server, aggiungerlo come remoto e inserire i rami e i tag, sì.
risposta data 13.03.2013 - 13:09
fonte

Leggi altre domande sui tag