为非跟踪远程设置目标分支

时间:2013-09-26 13:04:32

标签: git git-branch git-push

我在heroku上部署了一个网络应用程序。为了更新正在运行的实例,我必须git push我的代码到heroku remote的master分支。

我还将我的代码保存在github上,并将github作为我的origin和上游存储库。我正在尝试一个稍微新的工作流程,因此我的local-and-github master分支包含我正在本地工作的最新稳定版本;而local-and-github release分支包含实际在heroku上运行的代码。

鉴于这一切,我的工作流程目前看起来像这样:

$ git checkout master
... make some changes ...
$ git commit
$ git push                # to origin/master - that is, github
$ git checkout release
$ git merge master
$ git push heroku master  # Push the release branch to heroku's master branch, thereby sending it live.

我希望每次都能在master行之后输入git push heroku。我绝不想在master上推送heroku以外的任何内容。是否可以更改我的git配置,以便推送到本地heroku分支的release更新master上的heroku分支?

2 个答案:

答案 0 :(得分:1)

为配置添加自定义refspec并表示分配给目标的release远程分支的主题分支master将执行所需的git push heroku操作。

git config --add remote.heroku.push refs/heads/release:refs/heads/master

换句话说,refspec对任何对这个遥控器的推动都说:

  1. 源分支(本地)是release分支
  2. 目标分支(远程)是master分支
  3. 始终将release提交传送到此远程
  4. 上的master

    有关自定义refspecs的更多信息,请available here

答案 1 :(得分:0)

git 1.8:

git branch --set-upstream-to=heroku/master release

git 1.7:

git branch --set-upstream release heroku/master