2013-04-17 14 views
7

Ho due rami Z con alcuni modificati e M con alcune modifiche in conflitto. Mi piacerebbe unire il primo cambiamento su Z in M. Quando provo a vedere quali cambiamenti sono ancora disponibili. (ci sono in realtà un paio di modifiche, ma questo dimostra già il problema)cherry-picking con git con un conflitto

$ git checkout M 
$ git cherry M Z 
+ 153c2f840f2192382be1fc435ceb069f0814d7ff 
+ 4a7979d5dd526245b51769db21acf4c286825036 

$ git cherry-pick 153c2f840f2192382be1fc435ceb069f0814d7ff 
error: could not apply 153c2f8... add Z 
hint: after resolving the conflicts, mark the corrected paths 
hint: with 'git add <paths>' or 'git rm <paths>' 
hint: and commit the result with 'git commit' 
• (M|CHERRY-PICKING) $ git st 
# On branch M 
# Unmerged paths: 
# (use "git add/rm <file>..." as appropriate to mark resolution) 
# 
# both modified:  README.txt 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
• (M|CHERRY-PICKING) $ vim README.txt 

ho fissato il conflitto qui

• (M|CHERRY-PICKING) $ git add README.txt 
• (M|CHERRY-PICKING) $ git ci -m'cherry picked' 
    [M dc5de35] cherry picked 
    1 file changed, 1 insertion(+), 1 deletion(-) 
• (M) $ git cherry M Z 
+ 153c2f840f2192382be1fc435ceb069f0814d7ff 
+ 4a7979d5dd526245b51769db21acf4c286825036 

Così, dopo ho commesso il cambiamento si pensa ancora che né cambiamenti erano cherry raccolto mi aspettavo:

- 153c2f840f2192382be1fc435ceb069f0814d7ff 
+ 4a7979d5dd526245b51769db21acf4c286825036 

Come faccio a sapere di una settimana da ora che ho già 153c2f fusi? Come posso fare il cherry-picking in modo che sappia di quell'unione?

risposta

3

Come saprai?

Non utilizzando git cherry poiché riconosce solo commit che hanno la stessa git patch-id (see man page), cioè non quelli in cui si è dovuto risolvere i conflitti non banali.

Quindi dovrete sapere guardando il messaggio di commit.

In che modo le future fusioni sapranno del cherry-pick?

Poiché è stato risolto il conflitto quando è stata applicata la modifica selezionata, tale commit deve essere un elemento banale quando si unisce l'intero ramo in futuro.

Se siete davvero preoccupati per git ricordando come avete risolto il conflitto, si potrebbe attivare git rerere:

git config --global rerere.enabled true