2013-04-17 11 views
7

Ich habe zwei Zweige Z mit einigen Änderungen und M mit einigen widersprüchlichen Änderungen. Ich möchte die erste Änderung von Z in M ​​zusammenführen. Wenn ich versuche zu sehen, welche Änderungen noch draußen sind. (Es gibt tatsächlich ein paar weitere Änderungen, aber das zeigt schon das Problem)Cherry-Picking mit Git mit einem Konflikt

$ 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 

ich den Konflikt hier

• (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 

So fixiert, nachdem ich die Änderung verpflichtet sie denkt immer noch, dass weder Änderungen waren Kirsch- nahm ich es erwartet hatte:

- 153c2f840f2192382be1fc435ceb069f0814d7ff 
+ 4a7979d5dd526245b51769db21acf4c286825036 

Wie bin ich jetzt eine Woche wissen, dass ich gehen 153c2f bereits zusammengeführt? Wie kann ich das Rosinenpicken so machen, dass es von dieser Zusammenführung erfährt?

Antwort

3

Woher willst du das wissen?

Nicht von git cherry verwenden, da es nur Commits erkennt, die denselben git patch-id (see man page) haben, das heißt nicht solche, bei denen Sie hatten nicht-triviale Konflikte zu lösen.

Sie müssen also wissen, indem Sie auf die Commit-Nachricht schauen.

Wie werden zukünftige Zusammenführungen über den Kirschbaum wissen?

Da Sie den Konflikt gelöst haben, als Sie die ausgewählte Änderung angewendet haben, sollte dieses Commit trivial zusammengeführt werden, wenn Sie den gesamten Zweig in Zukunft zusammenführen.

Wenn Sie wirklich besorgt über git erinnern, wie Sie den Konflikt aufgelöst, könnten Sie ermöglichen git rerere:

git config --global rerere.enabled true