2011-01-07 11 views

risposta

2

È possibile eseguire il commit del lavoro in corso e inserirlo su un server in un ramo temporaneo. Ma per farlo, dovrai impegnarti con i segnalibri di conflitto (git add . ; git commit). E ti consiglio di non farlo, perché è troppo facile perdere uno dei posti in conflitto quando torni alla fusione. Puoi anche provare a schiacciare l'unione in corso (git squash save), ma non so se è possibile inserire un riferimento di squash su un server.

Un'altra alternativa potrebbe essere quella di provare a suddividere la fusione complessa in blocchi più piccoli e a spingere ogni unione intermedia.

Per exemple, se avete la seguente storia:

*---*---*---*---*---*---*---*---*---A 
    \ 
    \--*---0---1---2---3---4---5---B 

E tenta di unire B in A, è possibile ottenere la stessa cosa in primo luogo la fusione 0, poi 1, poi 2, poi 3,. .. quindi finalmente B (0, 1, 2, ... potrebbe non essere un commit successivo, ma alcune pietre miliari importanti nel ramo B).

Questa è la strategia che stiamo utilizzando durante l'unione complessa. Il ramo unito potrebbe non essere in uno stato lavorabile durante l'unione, quindi non inviare direttamente a A, ma a un altro ramo (AB-merge), quindi una volta completata l'unione, spingere tutto su A.

+0

Ho pensato al commit progressivo; ma per il caso specifico, non è possibile effettuare una fusione in corso, che è quello che sto cercando! – Marcus

+1

Aggiungerei: se usi 'git re-re-re', puoi far funzionare le unzioni più piccole, poi buttarle via e fare rapidamente la grande fusione usando i dati dei re-re-re. –

0

ma, nel caso specifico, non è possibile eseguire una fusione in corso, che è quello che sto cercando!

Dovrebbe essere possibile spostare temporanea .git/MERGE_HEAD (creato quando merging), commit, e ripristinare .git/MERGE_HEAD.

Problemi correlati