0

标题说什么。

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

如果可以通过 TortoiseGit Shell 扩展来完成,那就更好了。但我对命令行也很好。

4

2 回答 2

1

您可以通过以下命令执行此操作:

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

<Remote>您要使用的远程存储库在哪里。您只需使用和标志来删除和强制更新本地引用的fetch所有远程引用 ( refs/*:refs/*) 。--prune--force

于 2016-12-14T16:30:35.103 回答
0

以下行会将所有配置了上游分支的本地分支重置为上游分支的状态

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,因为您无法重置当前签出的分支,因此请在执行此操作后签出您想要在工作目录中拥有的分支。

于 2016-12-14T16:23:15.833 回答