Sono in procinto di convertire un vecchio repository SVN a Git, che include il tentativo di ottenere tutti i rami/tag in tutti i posti giusti. Quella parte sta andando piuttosto bene, ma ci sono momenti in cui voglio aggiungere un commit nella storia nel mio script che in seguito voglio schiacciare con il prossimo commit. Il problema è che non sto afferrando i commit uno per uno, ma come un grande gruppo, quindi non posso schiacciarli mentre li estraggo dal repository SVN. Alla fine, il mio repository è simile al seguente:Squash due Git si commette nel mezzo della cronologia senza rebase interattivo
* (branch_2, HEAD) commit 5
* commit 4
* commit 3
* SQUASH ME!
* (branch_1) commit 2
* commit 1
Voglio essere in grado di schiacciare commit 3
con SQUASH ME!
, che è ovviamente facile con una rebase interattivo, ma più impegnativo all'interno di uno script. Il problema principale che mi sembra sia che mentre è facile fare il checkout a branch_1
oa qualsiasi commit prima, è difficile chiedere il commit al al e per me è difficile prevedere quanti commit tornano da branch_2
Ho bisogno di andare . Voglio davvero essere in grado di fare qualcosa del tipo:
git checkout branch_1+2
Eventuali puntatori?
Date un'occhiata alla "su" l'opzione per il comando rebase per fare le cose come schiacciamento, senza dover essere interattivo (ottimo per gli script): http: // blog .pivotal.io/labs/labs/git-rebase-on –
@ Jonathan.Brink Non è esattamente quello che sto cercando. Questo post enfatizza la possibilità di abbandonare i commit. Voglio schiacciare (o riparare) il commit di "SQUASH ME!" Perché voglio le modifiche. Voglio solo che siano combinati con 'commit 3'. –
Potrebbe essere più semplice lasciare che lo script agisca come editor durante il rebase interattivo. – coredump