2011-11-22 18 views
218

Ho creato un nuovo ramo denominato newbranch dal ramo master in git. Ora ho lavorato un po 'e voglio unire newbranch a master; tuttavia, ho apportato alcune modifiche aggiuntive a newbranch e voglio unire newbranch fino al quarto dall'ultimo commit a master.Unisci a un commit specifico

ho usato cherry-pick ma mostra il messaggio di utilizzare le giuste opzioni:

git checkout master  
git cherry-pick ^^^^HEAD newbranch 

posso usare git merge per farlo, invece?

git merge newbranch <commitid> 

risposta

378

Certo, essendo in master ramo tutto quello che dovete fare è:

git merge <commit-id> 

dove commit-id è hash dell'ultimo commit da newbranch che si desidera ottenere nel vostro master ramo.

È possibile trovare ulteriori informazioni su qualsiasi comando git eseguendo git help <command>. In quel caso è git help merge. E i documenti dicono che l'ultimo argomento per il comando merge è <commit>..., quindi è possibile passare il riferimento a qualsiasi commit o persino più commit. Però, non l'ho mai fatto io stesso.

+12

non solo un singolo commit ma tutti i commit precedenti a 'commit-id' – Dau

+31

Sì, unirà tutti i commit da' newbranch' dal momento in cui la sua cronologia si è allontanata da 'master' a' commit-id' in ramo 'master'. Puoi pensare a 'git merge ' come unire un ramo senza nome che termina con 'commit-id' nel tuo ramo corrente. –

+0

Posso unire tra due rami locali diversi da quello principale, utilizzando l'ID commit? – skt

2

Per mantenere pulito ramificazione, si potrebbe fare questo:

git checkout newbranch 
git branch newbranch2 
git reset --hard <commit Id> # the commit at which you want to merge 
git checkout master 
git merge newbranch 
git checkout newbranch2 

In questo modo, newbranch finirà dove è stata fusa per incorporazione in padrone, e di continuare a utilizzare newbranch2.

Problemi correlati