本篇重點
- 強制更新遠端分支進度到本地分支的方法
git checkout -B
強制更新本地分支- 刪除並重新建立本地分支
git reset --hard
強制更新本地分支- 強制更新本地分支進度到遠端分支的方法
git push -f
強制更新遠端分支
在版本控制的過程中,有時會遇到本地分支的進度與遠端分支不同步的情況,而當遠端分支的進度才是正確版本時,需要強制更新本地分支來與遠端保持同步。以下提供三種方法來完成本地分支的強制更新!
強制更新遠端分支進度到本地分支
方法一:git checkout -B
(推薦)
git1 2
| git fetch origin git checkout -B local-branch origin/remote-branch
|
- 使用
git fetch
更新遠端分支的資訊。 - 接著執行
git checkout -B
,該指令會執行以下操作:- 切換到指定的本地分支(若不存在,會自動建立)。
- 強制將本地分支重置為遠端分支的最新進度。
- 不管當前位於哪個分支,都可以直接使用
git checkout -B
來切換並更新指定分支
範例
遠端分支為 origin/develop
,本地分支為 develop
git1 2
| git fetch origin git checkout -B develop origin/develop
|
方法二:刪除並重新建立分支
git1 2 3
| git fetch origin git branch -D local-branch git checkout -b local-branch origin/remote-branch
|
- 使用
git fetch
更新遠端分支的資訊。 - 使用
git branch -D
刪除本地分支。 - 透過
git checkout -b
重新建立一個與遠端分支同步的本地分支。
範例
遠端分支為 origin/develop
,本地分支為 develop
git1 2 3 4
| git fetch origin git checkout master git branch -D develop git checkout -b develop origin/develop
|
- 使用
git branch -D
刪除分支時,要先離開欲刪除的分支 git checkout -b
只能建立當前不存在的分支
方法三:git reset --hard
git1 2 3
| git fetch origin git checkout local-branch git reset --hard origin/remote-branch
|
- 使用
git fetch
更新遠端分支的資訊。 - 使用
git checkout -b
切換到欲更新的分支。 - 使用
git reset --hard
將當前的本地分支強制重置為遠端分支的最新進度。
範例
遠端分支為 origin/develop
,本地分支為 develop
git1 2 3
| git fetch origin git checkout develop git reset --hard origin/develop
|
git reset --hard
會丟失本地的變更,本地未提交的更改將會消失
強制更新本地分支進度到遠端分支
git push -f
git1 2
| git checkout local-branch git push -f origin remote-branch
|
- 使用
git checkout -b
切換到要推送的分支。 - 使用
git push -f
強制更新遠端分支進度。
範例
遠端分支為 origin/develop
,本地分支為 develop
git1 2
| git checkout develop git push -f origin develop
|
如果遠端分支的名稱和本地分支的名稱不同(遠端分支為 origin/develop
,本地分支為 dev
),可以使用 git push -f origin dev:develop
做更新
結論
我認為使用 git checkout -B
是最方便且直觀的方式,能快速完成本地分支與遠端分支的同步,且無需額外刪除或重建分支,適合大多數情況。不過,選擇哪種方式還是取決於當前分支的狀況與需求。需要特別注意的是,強制更新可能會無法復原,所以執行時要特別注意,確認無誤再更新,避免重要紀錄遺失。
延伸閱讀
【Git 官方文件】git checkout -B 介紹
【Git 官方文件】git push -f 介紹
【Git 官方文件】git reset –hard 介紹
【Git 官方文件】git fetch 介紹