2012-11-01 16 views
8

È un po 'come voglio ciliegio raccogliere tutti i commit dal ramo ad eccezione di uno, ma mi piacerebbe farlo in un solo comando ...Qual è il modo più semplice per unire tutti, ma un cambio da un ramo in Git?

• Abbiamo tagliato un comunicato, che crea un ramo

• La versione cambia il numero di versione in tutti i nostri poms, sul ramo su un numero e su master su un numero diverso

• Ho eseguito una serie di altre modifiche al ramo e voglio copiare quelle i cambiamenti di nuovo sul maestro

• ho fusi il ramo di nuovo in master, che Brou il codice cambia, ma cambia anche il numero di versione, creando conflitti in ogni pom

C'è qualche modo semplice per me di ripristinare tutti i file pom sul loro contenuto di pre-unione e quindi eseguirne il commit come risultato dell'unione?

+0

Se la situazione è che si desidera unire, ma lasciare fuori della fusione tutti i file che sono in conflitto, vedere [Posso unire solo le modifiche non in conflitto in Git?] (http://stackoverflow.com/questions/12572530/ git-merge-ignoring-conflict) –

+0

Esiste una soluzione migliore. Utilizzare il mio autista si fondono e non dovete fare nulla :-) dare un'occhiata alla mia risposta: http://stackoverflow.com/a/26866992 –

risposta

12

Ecco cosa io suggerirei di fare. In primo luogo, fare una fusione regolare, ma non commetterlo:

git checkout master 
git merge --no-commit <branch> 

poi, ripristinare tutti i file pom:

for file in $(find . -name 'pom.xml'); do git checkout HEAD "$file"; done 

allora si dovrebbe essere in grado di impegnarsi il risultato finale:

git commit 
+0

funzionava. Grazie! Il grafico di registro sembra molto meglio di un cherry-pick. C'è ancora un po 'di .orig non monitorate e file .backup, ma sbarazzarsi di loro è una questione diversa. –

+0

+1 ... bella routine di ricerca ... molto elegante ;-) –

Problemi correlati