2015-08-21 12 views
8

Spero che il titolo non sia molto confuso.GIT: Come estrarre le modifiche dal ramo dopo un'operazione di unione ripristinata

Storia (aka Quello che ho fatto di sbagliato):

Diciamo che ci sono due rami, master e funzionalità. La caratteristica è un ramo in cui mantengo un progetto di feature più lungo e di volta in volta utilizzo il master di origine di git pull su quel ramo per rimanere aggiornato con le modifiche nel codice principale.

Ho accidentalmente unito e inserito la funzione nel master.

Non era neanche lontanamente pronto, quindi ho provato a ripristinarlo. Ho provato a seguire: http://sethrobertson.github.io/GitFixUm/fixup.html#pushed_new_merge Ma immagino di aver sbagliato. Ho usato: git revert quindi ha commesso il ripristino e lo ha spinto. Il problema sembrava risolto: la funzionalità cambia dove non si trova più il master.

Ora il problema è che quando provo a utilizzare git pull master di origine sul ramo di funzionalità, continua a eliminare i miei file e a ripristinare tutte le modifiche, poiché si sta unendo con revert-commit. Il capo del master è passato oltre e io ho bisogno di estrarre le modifiche dai nuovi commit per continuare con il branch delle funzionalità.

Googled l'argomento e la risposta più promettente è questo: https://metlos.wordpress.com/2012/01/13/git-merging-after-a-revert/ ma qui l'unione va altro modo se non voglio (caratteristica da padroneggiare, ho bisogno di maestro di funzionalità).

Sto pensando di creare il ramo clone del master, quindi di applicare le istruzioni dal link su quel ramo in modo da ottenere i risultati di cui ho bisogno, ma temo che sia una soluzione temporanea che avrei bisogno di applicare ogni volta che voglio tira dal maestro.

Ho provato meglio per questa storia non essere caotica, Se qualcosa non è comprensibile, chiarirò.

risposta

3

Se non si è spinto ramo principale ad una squadra/repository pubblico e avete nessun commit dopo il tiro sul maestro, si può fare

git reset --hard **the-commit-before-pulling-feature-branch** 

sul maestro ramo. Questo cancellerà efficacemente l'errore dalla storia e darà una storia pulita.

altrimenti, (vale a dire se si è già spinto master per un repo o fatto più commit sul master), si può fare

git revert **the-revert-commit** 

sul funzione ramo dopo aver tirato il padrone, tornando in modo efficace il revert commettere.

+1

L'ho premuto e sono stati già effettuati nuovi commit. La tua soluzione ha funzionato come un incantesimo. All'inizio ho ricevuto un errore "impossibile ripristinare", ma era solo un file che richiedeva la fusione manuale. Grazie mille. – effique

Problemi correlati