2014-07-21 58 views
0

我有一個項目與多個分支。我可以看到branch2存在的提交,但不是在branch1用這個命令:創建包含2個分支之間的目錄差異的新分支

git log branch1..branch2 path/to/dir 

我想創建過的含在執行上面的命令時,提交顯示branch1一個新的分支。

例如:

在BRANCH1:

git log path/to/dir 
    commit1 
    commit2 

在BRANCH2:

git log path/to/dir 
    commit1 
    commit2 
    commit3 
    commit4  

然後我上面提到的命令將返回以下內容:

git log branch1..branch2 path/to/dir 
    commit3 
    commit4 

我想找到一種方法來創建一個新的分支,其基數爲branch1,我們將其稱爲integration-branch,其中包含這2個提交。

git log可能不是這裏的第一步,但它可以幫助我說明我想完成的任務。我認爲有git merge和高級形式允許部分合併到另一個分支。

對我的另一種選擇是先創建integration-branchbranch1,然後從branch2合併只是如果我理解正確的話,你要創建一個開始於branch1一個新分支的path/to/dir

+2

目前尚不清楚你想要什麼。首先,日誌命令的輸出實際上是一個日誌。據推測,你想要的是實際的提交,而不是日誌消息。其次,你想只是匹配的提交? –

+0

重寫了這個問題和包含的例子。現在清楚了嗎? – flivan

回答

1

變化幷包含只有branch2提交的觸摸path/to/dir。最好的方法是使用git cherry-pick。這是我會怎麼做:

// create a new branch to work on 
$ git checkout -b newbranch branch1 
// grab the commit IDs we want and cherry-pick them 
$ git cherry-pick $(git log --pretty=format:%H --reverse branch1..branch2 -- path/to/dir) 

有對衝突的文件比path/to/dir其他潛在如果沒有被選中嘗試引入改變那些違反補丁的先決條件文件的提交,因爲介入提​​交過跳過。繞過這將需要通過有趣的提交,生成僅限於對有趣文件所做更改的修補程序,並按順序手動應用這些修補程序,如果我們在這裏討論大量提交,可能會變得有點乏味......

+0

是的,你理解正確。我知道櫻桃採摘,但錯過了subhell來獲取提交ID的集合。我會給這個鏡頭,並將它標記爲如果它的工作回答。謝謝 – flivan

相關問題