如何重置整个 Git 存储库,而不仅仅是"Master"分支,以匹配远程?



标题所说的。

我想重置每个本地分支以匹配我的远程存储库,包括删除仅在本地存在的一些分支和标签,而无需删除所有内容并从头开始克隆。我只能找到有关如何重置特定分支的说明,而不是整个存储库。

如果可以从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,因为您无法重置当前检查的分支,因此在此执行此操作之后,请检查您想要在工作目录中拥有的分支。

最新更新