【发布时间】:2016-11-27 03:20:14
【问题描述】:
我关注this steps 成功管理 Heroku 中的 2 个环境,以及如何在 git 中进行设置。一切正常,但现在我遇到了 git 显示遥控器旧名称的问题,无法删除它。
在本教程之前,我只有两个遥控器,origin 和 heroku。但如前所述,推荐的约定名称是staging 和production,所以我通过.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 只是一个简单的名称(如origin或production),remote-tracking 分支 是一个引用,其全名以refs/remotes/开头,后跟由一个远程名称,后跟一个分支名称。
标签: git macos heroku sourcetree