為什么有這樣的需求?
在開發(fā)過程中安疗,本來一直維護國內(nèi)版本,國外因為接入的是google等sdk门坷,所以是另一個同事開辟了一個子分支并在上面做維護,兩個分支并不需要進行合并等操作
但是某一天写烤,需要我切換到國外的分支臨時進行操作撒强。所以在同步倉庫遠程代碼到本地的時候出現(xiàn)了錯誤禽捆。所以有了這次的記錄。
首先創(chuàng)建本地分支并切換
//執(zhí)行
git branch google
git checkout google
// 或者執(zhí)行
git checkout -b google
這樣創(chuàng)建了
查看倉庫的所有分支
git branch -a
這時候會列出倉庫中的所有分支
關(guān)聯(lián)本地分支到遠程分支上
假設(shè)倉庫中有分支名為
remote/origin/google
的分支
使用命令
git branch --set-upstream-to origin/google
為什么需要關(guān)聯(lián)遠程分支飘哨?
因為每次執(zhí)行git pull
命令時胚想,都需要在后面加上<remote>
<branch>
兩個參數(shù),在關(guān)聯(lián)后杖玲,就不需要后面兩個額外參數(shù)了
同步本地分支到最新
這時候自然想到了使用
git pull
顿仇,但是使用命令后會發(fā)現(xiàn)出現(xiàn)了大量文件沖突淘正,甚至可能有上百個,這時候顯然是不正常的臼闻。為什么鸿吆?
下面看看當(dāng)前分支示意圖
遠程分支:
本地分支
遠程分支的 child_1 _2 _3 假設(shè)都是別人提交的
這時候 遠程分支的 master_4 和 child_3 的差異實際上是非常大的诈嘿。
而本地創(chuàng)建的分支 child_1 是在master_4 的基礎(chǔ)上創(chuàng)建的绒尊,它們的工作空間的代碼都是一樣的。所以 master_4 == child_1
這時候如果我們執(zhí)行git pull
命令蹦疑,實際是將遠程分支的 child_3 和 master_4 進行合并乓搬。自然會出現(xiàn)大量沖突
但是我不需要合并思犁,而是直接切換到 child_3 就好了
所以執(zhí)行:
git log --graph --decorate --oneline --simplify-by-decoration --all
查看分支結(jié)構(gòu)圖
如果遠程分支是
origin/google
則找到前面的分支號,然后執(zhí)行
git reset --hard *******
這時候代碼直接切換到了 child_3
然后可以正常工作了