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