Git 解決分支衝突

在使用 git 進行版本管理的開發過程當中,常常遇到上傳或者拉取分支的時候衝突,在遇到衝突的時候,常常使用下面兩個方式解決,雖然第一個方案看起來比較複雜,可是若是按我以前的文章: Git 工做流 進行工做的話,只須要執行三、四、5三步便可。git

雖然提供的解決方案,可是最好仍是從根源上下降衝突出現的頻率纔是最好的方案。shell

新建分支方法

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

  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 系列命令解決衝突。app

  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 與當前分支作比較,若是加了則用指定的暫存code

  • 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 修改的文件,而後再applyblog

git add test.txt
git stash apply

文章首發於:https://www.zucchiniy.cn開發

相關文章
相關標籤/搜索