“git push heroku master”如何知道推送到哪里以及如何推送到另一个回购?

时间:2011-03-17 11:45:34

标签: git heroku

当推送到Heroku上托管的存储库时,必须执行以下命令:

git push heroku master

此命令中herokumaster表示什么? git如何知道在哪里推送? (git路径)

此外,我不知道我可以使用heroku rename来重命名应用,所以之前,我说使用应用名称trytryheroku,现在我使用heroku create real-thing但是如果我推,它仍然推送到trytryheroku ...有没有办法推动真实的东西呢?

6 个答案:

答案 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