Git merge 不同的branch


Git的優勢是可以創建不同的branch,然后在每個branch上開發。那么問題是:如果不同的branch之間需要做同步,比如sourceBranch上做的修改也需要同步到targetBranch,改怎么做?

A). 如果一個branchA (targetBranch)是有遠程Git server管理的,另一個branchB (sourceBranch)是自己本地的,即把sourceBranch的修改merge到targetBranch上:

   1. cd <your workspace>

   2. git branch  //假定現在所在的branch是targetBranch,並最好保證沒有未提交的修改,並且已經更新到最新

   3. git checkout -b branchB  //創建一個本地的sourceBranch並切換到sourceBranch

   4. git commit  //把sourceBranch上做的修改先提交

   5. git checkout branchA  //切換回targetBranch

   6. git merge --no-ff branchB  //把sourceBranch的修改merge到targetBranch。注意:建議merge的時候總是用 --no-ff 選項

   7git status  //保證現在workspace是干凈的

   8. git push origin branchA //push到遠程,如果遠程有新的修改,先做一下git pull

 

B). 如果兩個branch都是遠程管理的,想把branchB (sourceBranch)的內容同步到branchA (targetBranch)上

   1. cd <your workspace>

   2. git branch  //假定現在所在的branch是branchA (targetBranch),並最好保證沒有未提交的修改,並且已經更新到最新

   3. git checkout branchB  //確保同一個workspace能在不同的branch直接切換,即保證 .git/config里 [remote "origin"] 的內容是 fetch = +refs/heads/*:refs/remotes/origin/*

   4. git merge branchA //先把targetBranch的修改merge到sourceBranch上,這樣有沖突可以在sourceBranch上先解決,保證之后再merge回targetBranch的時候容易處理,targetBranch不再有沖突

   5. 解決conflicts如果merge的結果里有顯示conflicts

   6. git commit  //解決沖突后先commit到branchB

   7. git checkout branchA  //切換到targetBranch

   8. git merge --no-ff branchB  //建議merge的時候總是用 --no-ff 選項

   9. git push origin branchA   //把sourceBranch的修改merge到targetBranch之后,push到遠程的targetBranch

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM