标题说什么。
我想重置每个本地分支以匹配我的远程存储库,包括删除一些只存在于本地的分支和标签,而不必删除所有内容并从头开始克隆。我能找到的只是关于如何重置特定分支的说明,而不是整个存储库。
如果可以通过 TortoiseGit Shell 扩展来完成,那就更好了。但我对命令行也很好。
标题说什么。
我想重置每个本地分支以匹配我的远程存储库,包括删除一些只存在于本地的分支和标签,而不必删除所有内容并从头开始克隆。我能找到的只是关于如何重置特定分支的说明,而不是整个存储库。
如果可以通过 TortoiseGit Shell 扩展来完成,那就更好了。但我对命令行也很好。
您可以通过以下命令执行此操作:
git checkout --orphan @
git fetch <Remote> refs/*:refs/* --refmap= --prune --force
<Remote>
您要使用的远程存储库在哪里。您只需使用和标志来删除和强制更新本地引用的fetch
所有远程引用 ( refs/*:refs/*
) 。--prune
--force
以下行会将所有配置了上游分支的本地分支重置为上游分支的状态
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
,因为您无法重置当前签出的分支,因此请在执行此操作后签出您想要在工作目录中拥有的分支。