Git 解決分支沖突


在使用 git 進行版本管理的開發過程中,經常遇到上傳或者拉取分支的時候沖突,在遇到沖突的時候,經常使用下面兩個方式解決,雖然第一個方案看起來比較復雜,但是如果按我之前的文章: Git 工作流 進行工作的話,只需要執行3、4、5三步即可。

雖然提供的解決方案,但是最好還是從根源上降低沖突出現的頻率才是最好的方案。

新建分支方法

本文主要討論 Git feature 與 master(develop) 分支沖突解決方案。

  1. git pull : 同步遠程分支,發現當前的開發流有了新的提交,且與自己開發的功能有沖突。
  2. git checkout -b feature : Checkout 到 feature 分支。
  3. git checkout master git pull origin master : 切換到 master 分支並拉取最新的內容。
  4. git checkout feature git rebase master: 切換到 feature 分支並將 master 的修改合並,並解決沖突。
  5. git add -A git rebase --continue : 將修改內容保存並繼續 rebase 操作。
  6. applying: xxxx : 看到這個提示表示已經完成了合並。
  7. git checkout master git merge feature : 切換到 master 分支並將 feature 分支內容合並過來。

暫存提交方案

在修改的時候,忘記新建對應的分支了,可以按上面的方案,但保存,然后創建新的分支,再將遠程分支對應分支的內容 reset 回未修改的狀態。或者使用 git stash 系列命令解決沖突。

  1. git stash : 暫存修改的內容
  2. git pull : 拉取最新的內容
  3. git stash apply or git stash pop : 將暫存的內容合並進來

git stash 命令

git stash apply : 應用暫存內容但是不刪除,可以是最近的一次暫存,也可以按序號應用 git stash apply stash@{0}
git stash drop : 移除暫存的內容
git stash pop : 應用的同時從列表中移除,只能操作最近的一次 stash 的內容
git stash list : 查看整個的暫存列表
git stash save : 來查看對應的所有的修改,這樣就可以非常方便的找到最好的實現方案
git stash show -p stash@{1} : 不輸入對應的 stash@{} 內容則將最近的 stash 與當前分支做比較,如果加了則用指定的暫存

  • Git stash apply 的時候,報錯 :
error Your local changes to the follow files would be overwritten by merge: xxxx
Please commit your changes or stash them before you merge .

可以先add 修改的文件,然后再apply

git add test.txt
git stash apply


免責聲明!

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



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