【问题标题】:Git is showing a Heroku remote that doesn't existGit 显示一个不存在的 Heroku 遥控器
【发布时间】:2016-11-27 03:20:14
【问题描述】:

我关注this steps 成功管理 Heroku 中的 2 个环境,以及如何在 git 中进行设置。一切正常,但现在我遇到了 git 显示遥控器旧名称的问题,无法删除它。

在本教程之前,我只有两个遥控器,originheroku。但如前所述,推荐的约定名称是stagingproduction,所以我通过.git/config 文件将远程heroku 重命名为staging。在该更改中,我必须遵循以下说明:"Cannot update paths and switch to branch at the same time" 因为重命名的staging 遥控器不会显示任何分支。抓取成功了。

推/拉和部署现在在两个 Heroku 环境中工作得非常好,但是 Sourcetree 和 git 控制台显示旧的远程名称,我无法摆脱它:

> git branch -avv
* develop                 [origin/develop] Merge branch 'dummy-fix' into develop
dummy-fix                 changed full vs first_name
master                    [origin/master] Merge branch 'develop'  
staging                   [staging/master] Merge branch 'develop' into staging
remotes/heroku/master     Merge branch 'develop'
remotes/origin/develop    Merge branch 'dummy-fix' into develop
remotes/origin/master     Merge branch 'develop'
remotes/production/master Merge branch 'develop'
remotes/staging/master    Merge branch 'develop' into staging

远程 remotes/heroku/master 不应该存在,但是当我存在时:

> git remote rm heroku
error: Could not remove config section 'remote.heroku'

这是我的.git/config(显然不是真正的 URL)

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://my-user@the-repo-url-in-bitbucket.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "develop"]
    remote = origin
    merge = refs/heads/develop
[remote "staging"]
    url = https://git.heroku.com/my-app-name-in-staging.git
    fetch = +refs/heads/*:refs/remotes/staging/*
[remote "production"]
    url = https://git.heroku.com/my-app-name-in-production.git
    fetch = +refs/heads/*:refs/remotes/production/*
[heroku]
    remote = staging
[push]
    default = tracking
[branch "staging"]
    remote = staging
    merge = refs/heads/master

【问题讨论】:

  • remotes/heroku/master 不是远程,它是一个远程跟踪分支。这些(大部分)是独立的概念(尽管拥有一个没有相应远程的远程跟踪分支几乎没有意义)。 remote 只是一个简单的名称(如originproduction),remote-tracking 分支 是一个引用,其全名以refs/remotes/ 开头,后跟由一个远程名称,后跟一个分支名称。

标签: git macos heroku sourcetree


【解决方案1】:

我一直在挖掘,似乎.git 文件夹在config 文件中对遥控器的引用更多。找到了 3 个点,我手动删除了文件夹 heroku,或配置文件中的 ref,这似乎解决了它。现在我在终端和 Sourcetree 中都看不到幽灵遥控器。

【讨论】:

  • 通常,删除远程应该删除所有相应的远程跟踪分支(请参阅我对问题的其他评论)。但是,如果由于某种原因失败了,您可以使用 git branch -r -d 从命令行删除远程跟踪分支。
  • 这一行非常有用。谢谢@torek
  • 就我而言,我只是删除了 /.git/refs/remotes/ 中的所有分支,并使用 SourceTree 更新远程存储库。在此之后,我的幽灵回购都消失了。 RIP。
猜你喜欢
  • 2011-09-07
  • 2013-10-18
  • 2012-08-01
  • 2014-10-28
  • 2014-12-09
  • 2011-02-17
  • 2014-03-12
  • 2012-04-28
相关资源
最近更新 更多