Git的優點是能夠建立不一樣的branch,而後在每一個branch上開發。那麼問題是:若是不一樣的branch之間須要作同步,好比sourceBranch上作的修改也須要同步到targetBranch,改怎麼作?git
A). 若是一個branchA (targetBranch)是有遠程Git server管理的,另外一個branchB (sourceBranch)是本身本地的,即把sourceBranch的修改merge到targetBranch上:fetch
1. cd <your workspace>spa
2. git branch //假定如今所在的branch是targetBranch,並最好保證沒有未提交的修改,而且已經更新到最新server
3. git checkout -b branchB //建立一個本地的sourceBranch並切換到sourceBranch開發
4. git commit //把sourceBranch上作的修改先提交rem
5. git checkout branchA //切換回targetBranchget
6. git merge --no-ff branchB //把sourceBranch的修改merge到targetBranch。注意:建議merge的時候老是用 --no-ff 選項同步
7. git status //保證如今workspace是乾淨的it
8. git push origin branchA //push到遠程,若是遠程有新的修改,先作一下git pullco
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