标题所说的。
我想重置每个本地分支以匹配我的远程存储库,包括删除仅在本地存在的一些分支和标签,而无需删除所有内容并从头开始克隆。我只能找到有关如何重置特定分支的说明,而不是整个存储库。
如果可以从Tortoisegit shell Extension中完成,则更好。但是我对命令行也很好。
您可以通过以下命令来完成:
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
,因为您无法重置当前检查的分支,因此在此执行此操作之后,请检查您想要在工作目录中拥有的分支。