2017-05-29 142 views
1

我有分支主分支dev。我錯誤地從主人開始了一個功能分支。意思是,我在做主人時做了git checkout -b feature-branch將分支合併到與起始分支不同的分支

現在我想合併分支開發中的功能分支。我該怎麼做?

+0

'git checkout master && git merge featurebranch' ?? – ckruczek

+0

@ckruczek但我想合併到dev –

+0

然後簽出dev而不是master。怎麼了? – ckruczek

回答

1

如果沒有太多的提交,然後「混帳cherrypick」是一個選項:

  1. 創建Dev分支的新特性分支
  2. 使用git cherrypick從原來的話題分支複製提交
  3. 刪除原來的話題分支

編輯:我添加了一個例子,如何做同樣用「git的變基」命令:

  1. 弄清楚了提交散列是主題分支
  2. git的變基--onto開發hash_b4_topic topicbranch的父

您還可以使用支〜n的語法,而不是提交哈希如果你不害怕提交提交;)儘管它只是一個命令,但我仍然會使用第一個選項,因爲它需要付出相當多的努力才能使其正確(即檢查手冊,選擇正確的命令行參數)。所以只有移動更長的主題分支纔有意義。

+0

這實際上是最簡單的解決方案! –

+0

另一個不錯的選擇是「git rebase」,但這可能需要更多的時間和精力來獲得命令行參數。 – JooMing

+0

只是出於好奇,我如何用rebase做到這一點? –

0

將您從一個branch所做的已提交更改合併到另一個您可以使用的:git merge <branchname>。讓我幫你一個例子:」

我要合併我已經與分支dev所做的更改我的master branch我會做的第一件事是提交分支dev的變化的話,我會切換到分支。 master,我會通過合併從dev分支的變化:

git merge dev 

所以一步一步:首先從開發分支提交更改

git commit -m "<commit message>" 

第二步:SWITC h至主分支

git checkout master 

最後一步:/從dev分支合併更改

git merge dev 

希望這有助於!

0

在開始工作之前,您可以使用'git log'來查找點,然後使用'git diff'來查找當前HEAD和該點之間的差異。 'git apply'將應用該差異。

  1. 在你的功能分支上,使用git log來查找你的工作的開始。在工作之前記錄提交。

    git checkout feature-branch 
    git log 
    
  2. 商店(當前HEAD修訂版),你上面找到的點和你的工作之間的差別。 HEAD是一個暗示的論點。

    git diff (commit_from_step_above) > patch.txt 
    
  3. 將您的更改應用於正確的功能分支。

    git checkout dev 
    git checkout -b proper_feature-branch 
    git apply patch.txt 
    (add, commit, etc) 
    

如果其他人已經改變了您要更改相同的文件,你就會有一個合併衝突。這是預料之中的。