在使用 git 進行版本管理的開發過程中,經常遇到上傳或者拉取分支的時候沖突,在遇到沖突的時候,經常使用下面兩個方式解決,雖然第一個方案看起來比較復雜,但是如果按我之前的文章: Git 工作流 進行工作的話,只需要執行3、4、5三步即可。
雖然提供的解決方案,但是最好還是從根源上降低沖突出現的頻率才是最好的方案。
新建分支方法
本文主要討論 Git feature 與 master(develop) 分支沖突解決方案。
git pull: 同步遠程分支,發現當前的開發流有了新的提交,且與自己開發的功能有沖突。git checkout -b feature: Checkout 到 feature 分支。git checkout mastergit pull origin master: 切換到 master 分支並拉取最新的內容。git checkout featuregit rebase master: 切換到 feature 分支並將 master 的修改合並,並解決沖突。git add -Agit rebase --continue: 將修改內容保存並繼續 rebase 操作。applying: xxxx: 看到這個提示表示已經完成了合並。git checkout mastergit merge feature: 切換到 master 分支並將 feature 分支內容合並過來。
暫存提交方案
在修改的時候,忘記新建對應的分支了,可以按上面的方案,但保存,然后創建新的分支,再將遠程分支對應分支的內容 reset 回未修改的狀態。或者使用 git stash 系列命令解決沖突。
git stash: 暫存修改的內容git pull: 拉取最新的內容git stash applyorgit 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
