Bitbucket同步時遇到衝突的解決方法(從特定的commit切新分支)
學習筆記
一般在開發時,有 master 以及 develop 分支是很正常的事情
而又有可能因為問題的不同而會修改到不同的分支
例如
開發新功能就在 develop 切分支
修改bug時則是在 master 切分支
因此有時候會造成 develop 和 master 不同步的問題
如果版控的工具是 Bitbucket,則可以利用頁面上的 『Sync now.』來解決
但有時候會發生 develop 和 master 衝突的問題
會顯示這樣的內容,告訴你哪個commit造成的
Sync branch
This merge has conflicts that must be resolved before it can be committed.
git checkout 4d17cca8c294
# Note: This will create a detached head!
git merge remotes/origin/master
這時候就必須手動解衝突了~
切換到分支
我們把那個 commit 編號複製下來
並切換到那邊
git checkout 4d17cca8c294
更新程式碼的衝突內容
下 pull
git pull
這時候應該就會看到有衝突的程式碼,將衝突改一改
將目前的commit開新的分支
這時候如果看狀態,會看到顯示這一行
HEAD detached at 4d17cca8
代表目前分之是一個 detached HEAD,並不指向任何HEAD
解決的方式就是將他開一個分支
git checkout -b new_HEAD
這樣,他就有自己的目的地了~
透過 log 也可以看到有新的 commit,已有被指到了
合併回原本的分支
因為這個分支只是我們要用來解衝突用的
這時候就可以將分支切回去原本要解衝突的地方,以 develop 為例
git checkout develop
然後再把它合併
git merge new_HEAD
這時候問題就解決了~可以直接跟心
git push
然後回到 Bitbucket 上面看
也就同步好了~
刪除不需要的分支
因為剛剛的分支只是暫時用來解衝突的
在本機刪除,一切就搞定了
git branch -D new_HEAD