当推送到Heroku上托管的存储库时,必须执行以下命令:
git push heroku master
此命令中heroku
和master
表示什么? git如何知道在哪里推送? (git路径)
此外,我不知道我可以使用heroku rename
来重命名应用,所以之前,我说使用应用名称trytryheroku,现在我使用heroku create real-thing
但是如果我推,它仍然推送到trytryheroku ...有没有办法推动真实的东西呢?
答案 0 :(得分:93)
'heroku'部分是您已设置的遥控器的名称 - 当您第一次创建一个指向您的应用程序的git远程调用'heroku'时创建一个heroku应用程序 - 如果您在其中键入'git remote'您的项目将显示远程端点。没有什么可以锁定你使用'heroku'作为遥控器的名称 - 如果你的应用程序有多个环境,你可能有遥控器命名为生产或升级。
'master'部分是您希望推送到远程的本地分支。如果您在功能分支中进行开发,例如名为“myfeature”,并且您希望将其部署到heroku,那么您可以这样做;
git push heroku myfeature:master
附加:master在这里说要将我的本地myfeature
分支推入远程的master
分支 - 注意:heroku只能从主分支部署。
如果你重命名一个应用程序,heroku git remote url会改变 - 做一个git remote -v
会显示你的应用程序正在使用的git repo,你可能需要删除旧的heroku来源并添加新的,git remote rm heroku
然后git remote add heroku git@newgitpathfromcontrolpanel
要了解有关Git的更多信息,我会推荐this本书
答案 1 :(得分:36)
第1部分:“git如何知道推送到哪里?”
在执行上述命令之前:
$ git push heroku master
总是很少有其他步骤可以执行:安装Git和Heroku,创建本地Git仓库,注册到heroku,通过命令行登录heroku,创建heroku句柄到托管点(解释第2部分)
<强> 1。本地Git存储库:
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "my first commit"
Created initial commit 5df2d09: my first commit
44 files changed, 8393 insertions(+), 0 deletions(-)
create mode 100644 README
create mode 100644 Procfile
create mode 100644 app/controllers/source_file
...
<强> 2。已注册(编辑)Heroku并通过命令行登录:
$ heroku login
Enter your Heroku credentials.
Email: user@example.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub
因此,通过运行$ git push heroku master
,您已将代码/应用推送到Heroku。
第2部分: heroku 和 master 表示什么?
它比Heroku更像是一个Git问题 - Heroku是一个托管平台,它依赖于Git(分布式版本控制系统)进行部署。
'推送'的基本概念是将我们在本地(在我们的工作机器中)的某些东西(文件,应用程序,...)推送到其他地方,在这种情况下是远程存储库(远程机器)。
在使用'push'之前的Git中,我们创建了一个远程(句柄),它作为对远程存储库(完整URL)的引用,我们使用以下命令:
$ git remote add <remote-name-of-our-choice> <URL-where-you-be-pushing-yourapp>
'push'命令的基本结构是:
$ git push <remote-name> <branch>
所以$ git push heroku master
实际上是将您的代码/ app /文件(从某些本地Git仓库)推送到远程仓库'heroku'。
想知道这个'heroku'遥控器什么时候被创建了,当你执行 $ heroku create
时就添加了它$ heroku create
Creating stark-fog-398... done, stack is cedar
http://stark-fog-398.herokuapp.com/ | git@heroku.com:stark-fog-398.git
Git remote heroku added
请注意最后一行“ Git remote heroku added ”。
更清楚,这是一个检查/输出所有遥控器的Git命令: $ git remote -v 将显示类似于以下内容的内容
$ git remote -v
heroku git@heroku.com:somerepo.git (fetch)
heroku git@heroku.com:somerepo.git (push)
因此我们可以假设以下命令在某处执行(隐式),当你执行$ heroku create 时,因此创建heroku远程某些heroku repo(url)*
$ git remote add heroku git@heroku.com:somerepo.git
答案 2 :(得分:8)
heroku是heroku gem的一部分,需要帮助推送,而master只是你推动的git分支。 git知道在哪里推送,因为您创建了一个heroku应用程序,自动设置了推送,您可以通过键入
来查看git remote -v
如果您需要更改,请使用git remote rm heroku
将其删除,然后使用git remote add heroku git@heroku.com:your-application-15.git
添加yoru新应用
答案 3 :(得分:1)
就像您一样,我也很难理解git和heroku的这些精妙之处,我也感到困惑。但是现在我已经很清楚可以简短地回答您的问题了。
假设您在项目目录中已安装git。您的项目文件夹中存在一个.git隐藏文件夹,其中包含一个名为“ config”的文件,其中包含有关遥控器的所有信息。
Remote是您的各个存储库,分别命名为Origin,heroku,staging,prod等。
在您的命令中,heroku代表您已映射到heroku项目的存储库。打开配置文件,您将看到URL。
跑步时
git push heroku master
您要告诉git将您当前的原始存储库的master分支推送到heroku存储库的master分支
其他所有答案都已经共享了所有详细信息,因此不想重复。因此,按照我的理解,这只是一个简短的答案。希望对您有所帮助。
答案 4 :(得分:1)
但是如果我推送,它仍然会推送到trytryheroku ...有没有办法推送到真实的东西?
我找到了您可能对heroku感兴趣的答案:
https://dashboard.heroku.com/apps/NAMEOFYOURAPP/deploy/heroku-git
$ cd my-project/
$ git init
$ heroku git:remote -a nameofyourapp
$ git add .
$ git commit -am "make it better"
$ git push heroku master
那样,heroku会知道往哪里推!
答案 5 :(得分:0)
其他答案非常适合您问题的前半部分...
这是下半场的简洁答案。
通过https://devcenter.heroku.com/articles/renaming-apps#updating-git-remotes
git remote rm heroku
heroku git:remote -a name-of-heroku-app