Rebase 版本衝突· Git
文章推薦指數: 80 %
請在解完conflict 後,下指令 git rebase --continue 使用 git rebase --skip 略過 ... 這時候rebase 的動作會先停下來,並且要求我們解決衝突. 我們保留"55" 刪除"33". Git 簡介 安裝 配置 初體驗 建立Git專案 提交一個Patch 檔案管理 新增/修改檔案 刪除檔案 搬移檔案 重新命名檔案 檔案狀態 檔案還原 忽略檔案 Patch管理 基本觀念 關鍵字HEAD ResetPatch 找回消失的Patch 修改/訂正Patch 移除單一個Patch Rebase互動模式 Cherry-Pick版本衝突 Rebase版本衝突 RevertPatch 分支管理 查看分支 建立/刪除分支 CommitTree Rebase合併分支 Merge合併分支 遠端篇 新增專案 設定RepoURL 上傳分支 設定Upstream 複製/下載專案 同步遠端分支 強制更新遠端分支 刪除遠端分支 進階篇 檔案暫存 Add/Checkout檔案部分內容 版本標籤 子模組 svn PoweredbyGitBook Rebase版本衝突 Rebase版本衝突 我們在上一章已經教了如何解cherr-pick的版本衝突 而Rebase互動模式其實就只是透過RebaseTODO依序完成多個cherry-pick的動作 因此,既然cherry-pick會發生版本衝突,那麼rebase必定也會發生版本衝突 現在我們就把剛才最後的兩個patch用Rebase互動模式再調換回來吧! 改成先"Add55",再"Add33" P0→...→P4→P5→P6現在的順序 1349bcea0afdc35e5c72e P0→...→P4→P6'→P5'我們將要改成的順序 $gitrebase-i1349bce#告訴git我們要改動的範圍是從P4之後的patch(P5)到HEAD(P6) #並且進入vim文字編輯模式來編輯RebaseTODO 我們把兩個patch的順序對調,並且存檔離開 git在cherry-pickP6的時候發生了衝突 fixconflictsandthenrun"gitrebase--continue" use"gitrebase--skip"toskipthispatch use"gitrebase--abort"tocheckouttheoriginalbranch 請在解完conflict後,下指令gitrebase--continue 使用gitrebase--skip略過這個patch 使用gitrebase--abort全部取消,並且回到rebase前的狀態 這時候rebase的動作會先停下來,並且要求我們解決衝突 我們保留"55"刪除"33" 把num.txtadd起來,下指令gitrebase--continue告知git已經解完conflict,請繼續 $gitrebase--continue#按下enter後,會立刻進入vim文字編輯模式 #就跟cherry-pick的時候一樣 解完P6的conflict之後,git會根據RebaseTODO繼續做下一件事情 接著會去做cherry-pickP5,又再度發生了conflict 我們把"33"跟"55"都保留下來 這裡還要特別注意行序,我們想要順序是11→33→55,而不是11→55→33 把num.txtadd起來,下指令gitrebase--continue告知git已經解完conflict,請繼續 進入vim文字編輯模式,存檔離開 使用gitlog查看結果 我們已經成功將P5跟P6的位置調換過來了 使用gitrebase--skip跳過目前正在執行RebaseTODO的動作,並執行下一個動作 use"gitrebase--skip"toskipthispatch Git對--skip的說明為"略過這個patch" 這對於Rebase互動模式來說,可以解釋為跳過目前正在執行RebaseTODO的動作 因為RebaseTODO的每個動作都會對應到一個patch git跳過目前正在執行的動作後,會繼續執行下一個動作 使用gitrebase--abort全部取消,並且回到rebase前的狀態 Rebase互動模式讓我們快速的完成多個cherry-pick的指令 如果中途輸入gitrebase--abort的話,就會全部取消,回到rebase前的狀態 包括中間好不容易解掉的conflict也要全部重來 如果想要保留之前解好的conflict並維持現狀的話,其實可以一直--skip到RebaseTODO全部跑完... 不過當遇到會連續發生conflict的狀況時,還是建議用cherry-pick一個一個挑會比較保險^^" 本章回顧 使用gitrebase--continue告知git已經解完衝突 使用gitrebase--skip跳過目前正在執行RebaseTODO的動作,並執行下一個動作 使用gitrebase--abort全部取消,並且回到rebase前的狀態 resultsmatching"" Noresultsmatching""
延伸文章資訊
- 1我在git merge的時候遇到了衝突,怎麼解決? - 人人焦點
接著我們checkout -b創建一個新的分支,在這個分支當中我們把test.txt之前的一行改成get conflict。然後我們同樣add commit。 最後,我們回到master分支, ...
- 2合併發生衝突了,怎麼辦? - 為你自己學Git | 高見龍 - gitbook.tw
git merge dog Auto-merging index.html CONFLICT (content): Merge conflict in index.html ... 這問題看來是...
- 3git遇到衝突了怎麼辦?別緊張,解衝後就好了。
When we use git merge to merge two branches, git has its own way to determine whether there is a ...
- 4本地分支衝突- git - W3HexSchool - 六角學院
這裡也來分享如何解決衝突,也附上本小節Git 範例程式碼. ... git merge dev Auto-merging all.css CONFLICT (content): Merge co...
- 5遇到冲突了怎么解决? - Git 进阶指南
你可以直接用编辑器打开冲突的源文件进行修改,但需要注意删除冲突标记,你也可以使用体验更加友好的Three-Way Merge 工具,借助 git mergetool 命令来完成。