【发布时间】:2018-08-21 01:06:11
【问题描述】:
我已经设置了一个 Heroku 应用,lucy-staging:
Kurts-MacBook-Pro-2:lucy kurtpeek$ git remote -v
staging https://git.heroku.com/lucy-staging.git (fetch)
staging https://git.heroku.com/lucy-staging.git (push)
我有一个本地分支custom-error-views,我想将它推送到staging 远程的master 分支。我正在尝试通过使用命令 git push staging custom-error-views:master 来关注 https://devcenter.heroku.com/articles/multiple-environments#advanced-linking-local-branches-to-remote-apps,该命令适用于推送 Git 子树:
Kurts-MacBook-Pro-2:lucy kurtpeek$ git subtree push staging custom-error-views:master --prefix lucy-web/
'custom-error-views:master' does not look like a ref
我不明白这个does not look like a ref 错误;它似乎类似于 Heroku 文档中的 development:master 参考。谁能指出这里出了什么问题?
更新
从源代码 (https://github.com/github/git-msysgit/blob/master/contrib/subtree/git-subtree.sh) 可以看出,此错误消息是专门针对 git subtrees 抛出的。它简化为git check-ref-format 返回非零错误代码的事实:
Kurts-MacBook-Pro-2:lucy kurtpeek$ git check-ref-format custom-error-views:master
Kurts-MacBook-Pro-2:lucy kurtpeek$ echo $?
1
【问题讨论】:
-
我没有使用
git subtree来做任何实际的事情,但看起来git subtree push从运行git subtree split开始,生成一个新的提交链并生成它的哈希ID。git subtree push然后将该哈希 ID 推送到远程引用:git push <hash>:<ref>。因此,通过 refspec 提供本地引用对您来说毫无意义:如果您推送到远程分支名称并且您有适当的fetch,您将获得与远程分支名称相对应的远程跟踪名称遥控器设置。 -
我收到此错误并决定更新 git。使用 git 2.33.1 - 它还没有出现在默认的 apt-get 存储库中,看来我不再收到那个错误了。 (我目前收到一个远程权限错误,但感觉更值得期待)