2011-11-22 46 views
218

我創建了一個新的分支名爲newbranchmaster分支在git中。現在我已經完成了一些工作並想合併newbranchmaster;但是,我已對newbranch進行了一些額外的更改,並且我想合併newbranch,直到上一次提交的第四次提交到master合併到一個特定的提交

我用cherry-pick,但它顯示的使用權選項消息:

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

我可以使用git merge做到這一點呢?

git merge newbranch <commitid> 

回答

378

當然,在master分公司所有你需要做的是就是:

git merge <commit-id> 

其中commit-id是最後的哈希從您希望在master分公司獲得newbranch提交。

你可以通過做git help <command>瞭解更多關於git命令的信息。那個案子是git help merge。並且文檔說merge命令的最後一個參數是<commit>...,所以您可以將引用傳遞給任何提交或甚至多個提交。儘管如此,我從來沒有做過後者。

+12

不僅僅是一次提交,而是所有提交'commit-id'之前的提交。 – Dau

+31

是的,它將自'newbranch'所有提交到'''''commit-id'之後的所有提交合併爲'master'分支。你可以將'git merge '想象成合並一些以'commit-id'結尾的未命名分支到你當前的分支。 –

+0

我可以使用提交ID來合併除主站之外的兩個本地分支嗎? – skt

2

要保持清潔分支,你可以這樣做:

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 

這樣,newbranch將結束它被合併到主,和你繼續newbranch2工作。