簡體   English   中英

如何重置整個Git存儲庫,而不只是重置“ Master”分支,以匹配Remote?

[英]How to reset the entire Git repository, and not only the “Master” branch, to match Remote?

標題怎么說。

我想重置每個本地分支以匹配我的遠程存儲庫,包括刪除一些僅在本地存在的分支和標簽,而不必刪除所有內容並從頭進行克隆。 我能找到的只是關於如何重置特定分支的說明,而不是整個存儲庫的說明。

如果可以從TortoiseGit Shell擴展中完成,那就更好了。 但是我對命令行也沒問題。

您可以通過以下命令進行操作:

git checkout --orphan @
git fetch <Remote> refs/*:refs/* --refmap= --prune --force

其中<Remote>是要使用的遠程存儲庫。 您只需使用--prune--force標志fetch所有遠程引用( refs/*:refs/* ),即可刪除並強制更新本地引用。

下面的行會將所有已配置上游分支的本地分支重置為上游分支的狀態

git checkout @{0} && git for-each-ref refs/heads --format '%(refname:strip=2)' | xargs -ri sh -c 'git rev-parse {}@{u} >/dev/null 2>&1 && git branch -f {} $(git rev-parse {}@{u})'

由於第一個命令,您將最終獲得一個分離的HEAD ,因為您無法重置當前已簽出的分支,因此請在執行此操作后簽出您想在工作目錄中擁有的分支。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM