2010-02-16 12 views
9

Ich habe diese (git Repo):(git): Wie bringt man spezifisches Commit aus der Upstream-Branch?

A--B--C--D ->master 
    \--E ->dev 

Und ich will nur D bringen verpflichten dev zu verzweigen (D hängt nicht von C), so dass:

A--B--C--D ->master 
    \--E--D' ->dev 

Aber D 'sollte nach einer Zusammenführung nicht zum Master hinzugefügt werden:

A--B--C--D--E' ->master 
    \--E--D'/ ->dev 

Dies ist, weil ich möchte, zu bringen ly ein Dateiupdate ohne dev mit neuen Dateien zu verschmutzen, die C (die eine andere, große Zusammenführung darstellt) hinzufügt.
Ich schätze, ich muss git rebase verwenden, aber ich kann nicht erraten, wie.

Antwort

10

Sie wollen git cherry-pick verwenden. Ich nehme an, Ihre Fernbedienung heißt "Herkunft" (aber ersetzen Sie den echten Namen des Remote-Repos für "Herkunft"). Ich nehme an, Sie haben zwei lokale Niederlassungen auch master und dev genannt. Ich nehme an, Commit D ist auf origin/dev. Sie können cherry-pick D mit den folgenden:

$ git fetch origin    # Assuming the upstream remote's name is "origin" 
$ git checkout dev    # Check out your local "dev" branch 
$ git cherry-pick $COMMIT_D # Replace "COMMIT_D" with the hash for commit D 

Jetzt müssen Sie nur die Änderungen haben von D in dev begehen.