重命名分支后无法打开 FETCH_HEAD

Cannot open FETCH_HEAD after renaming a branch

重命名 'master' 分支(使用 Sourcetree)后,我无法再获取远程存储库中所做的更改。

我收到错误:

error: cannot open .git/FETCH_HEAD: Permission denied

当我打开这个文件时,我看到引用的分支仍然设置为 branch 'master'

查看远程存储库,我看到一个名为 'master' 的分支仍然存在,此外还有我合并上次更改的重命名分支。我认为某处有问题,重命名没有在远程存储库中正确复制。

我已尝试手动编辑 FETCH_HEAD(更改完整的 SHA 和指向的分支),但我仍然遇到此错误。当然,我不能像在主分支之前那样再次重命名,因为名为 'master' 的分支始终存在。

有办法解决这个问题吗?

事实上,这个问题似乎(可能)是由于各种因素的结合造成的:

  1. 我实际上已经重命名了一个分支(但这似乎不是主要原因)
  2. 我也更新了用户名和邮箱地址(这可以支持分析我作为其他用户进行了各种操作)
  3. 由于known bug of SourceTree(突然停止跟踪某些远程分支),某些分支肯定无法获取

由于使用chown命令似乎没有效果,我终于使用以下过程解决了我的问题:

  1. 使用命令 rm -f .git/FETCH_HEAD 删除被拒绝的文件(如 this answer 中所述)
  2. 使用命令 git branch -u 重新连接未跟踪的分支(如 this comment 中所述)

在那之后,我能够获取所有远程分支,现在,所有分支都与我的本地存储库正确同步。