La funzione di finitura ripristinata si impegna a svilupparsi

2

Sto usando git come sistema di controllo della versione e usando git-flow come modello di ramificazione. Ho avviato un ramo di funzionalità alcune settimane fa per mantenere il sistema in uno stato pulito mentre sviluppavo quella funzionalità. Lo sviluppo principale è proseguito sul ramo develop e le modifiche dallo sviluppo sono state unite periodicamente nella funzionalità, per mantenerlo aggiornato il più possibile.

Tuttavia è arrivato il momento in cui la funzionalità è stata completata, e ho usato% g_out% di git-flow per unire la funzionalità in sviluppo. L'unione è stata eseguita con successo, ma poi ho scoperto che alcuni dei commit che ho fatto in sviluppo sono stati ripristinati dal commit di fusione!

In nessuna parte in finish feature o nel ramo della funzione queste modifiche sono state ripristinate, non riesco a vedere alcun commit che le sovrascriva. Non riesco a trovare nulla. L'unica teoria che ho per il momento è che il git mi stia sbagliando, ma sarebbe estremamente improbabile. Forse ho fatto una sorta di manipolazione sbagliata che ha reso questa situazione realtà?

Posso risalire alla cronologia quando è stato effettuato il commit. Posso vedere che i cambiamenti da quel commit sono stati ripristinati dal commit di unione. Da nessuna parte nel ramo vedo un commit che ripristina tali cambiamenti. Eppure sono stati ripristinati.

Com'è possibile?

    
posta marco-fiset 13.11.2013 - 02:59
fonte

2 risposte

2

Infine, è stato un errore da parte mia. Recentemente ho migrato il progetto da SVN a Git, e avevo quindi il ramo di funzionalità in SVN e non era sincronizzato con il trunk quando ho effettuato la migrazione.

Ho creato il primo commit nel ramo di sviluppo con il trunk, quindi ho avviato un nuovo ramo di funzione con git e ho eseguito il commit dei file come erano nel ramo di funzionalità SVN.

Il commit era più recente sul ramo della funzione, e poiché non era in sincrono con le ultime modifiche al tronco, pensò Git, e per un motivo, che le modifiche ripristinate furono apportate dopo il commit iniziale, apportando queste modifiche quando unire nuovamente il ramo allo sviluppo.

Ho risolto questo problema in un ramo separato, con un sacco di lavoro manuale, ma ora so che non era colpa di Git.

    
risposta data 13.11.2013 - 19:16
fonte
1

Ho avuto anche lo stesso problema, è più sicuro effettuare il checkout di un nuovo ramo temporaneo dal tuo ramo , unire e testare questo ramo temporaneo e unire, se sei sicuro di non aver perso qualcosa, unisci al tuo ramo principale.

Se hai una versione funzionante del tuo codice, convertila in una nuova versione o in un ramo con un tag descrittivo e non toccarla e vai avanti con il ramo di sviluppo.

Evita l'unione diretta per quanto possibile, invece usa il comando rebase , prima di unire. è come il comando stash .

    
risposta data 13.11.2013 - 04:35
fonte

Leggi altre domande sui tag