1. 程式人生 > >dev和master合並沖突解決

dev和master合並沖突解決

開發 新的 dmi apply 命令 版本發布 一個 ini 之前

前景

master主分支,dev是開發分支,master會保持最新的dev代碼

問題的產生

  1. dev開發新功能
  2. 版本發布,dev合並到了master,發布生產環境
  3. 新需求來了,在dev進行開發
  4. 同時,線上代碼有bug,從master拉新分支,改bug,之後合並到master
  5. master與dev這時代碼不一致,以後合並有可能會有沖突
  6. dev開發完成,上線上,先與最新master做一下rebase,解決沖突
  7. git rebase會根據你的git commit進行沖突解決,每次都要進行git rebase --continue,這是比較煩人的
  8. git log找到dev是在哪個commit裏合並到master的,找到後git reset --soft 把dev新需求合並成一個commit
  9. 最後再git rebase就可以了

相關git命令

找與master相同代碼時的commit id

$ git log
commit 9f4c0939ce30aca3f4e18e69b2deed7b721b3ebb (HEAD -> master)
Author: lind <[email protected]>
Date:   Sat Apr 27 12:45:24 2019 +0800

    master2

commit 09b6898a5b32ac5e23745f7b343424170869045a
Author: lind <[email protected]>
Date:   Sat Apr 27 12:44:48 2019 +0800

    master1

commit c9507744d6528a3df9529d92953c896a4c2d38a7
Author: lind <[email protected]>
Date:   Sat Apr 27 12:43:28 2019 +0800

    dev2

commit 817d0275820c83acdf5513a5fd5855a6eb84443c
Author: lind <[email protected]>
Date:   Sat Apr 27 12:42:59 2019 +0800

合並commit

$ git reset --soft  c9507744d6528a3df9529d92953c896a4c2d38a7
$ git add .
$ git commit -m "合並commit"

在rebase時,沖突提交數為1個,之前是dev有幾次新的提交,就要解決幾次

$ git rebase master
[email protected] MINGW64 /c/testgit (dev|REBASE 1/1)

解決沖突,刪除或者保留對應的代碼,最後再保存,提交即可

[email protected] MINGW64 /c/testgit (dev|REBASE 1/1)
$ git add .

[email protected] MINGW64 /c/testgit (dev|REBASE 1/1)
$ git rebase --continue
Applying: 合並commit

[email protected] MINGW64 /c/testgit (dev)

dev和master合並沖突解決