web-dev-qa-db-ja.com

ローカルのGitブランチをHeroku / masterにプッシュする方法

Herokuには「master」以外のすべてのブランチを無視するという方針があります。

Herokuの設計者がこの方針に素晴らしい理由を持っていると確信していますが(私はストレージとパフォーマンスの最適化について推測しています)、開発者としての私にとっての結果は私が取り組んでいるローカルトピックブランチが何であれ、私は簡単な方法を望みますHerokuのマスターをそのローカルトピックブランチに切り替え、 "git Push heroku -f"を実行してHerokuのマスターを上書きします。

http://progit.org/book/ch9-5.html の "Pushing Refspecs"セクションを読んで得たものは

git Push -f herokuローカルトピックブランチ:refs/heads/master

私が本当に欲しいのは、 "git Push heroku"が常にlocal-topic-branchを名前に置き換えるように、設定ファイルでこれを設定する方法です。私の現在のブランチがどうなっていようと。それを達成する方法を誰かが知っているならば、私に知らせてください!

これに対する注意点は、もちろん、これがHerokuのアプリケーション/リポジトリにプッシュできるのが私だけである場合にのみ意味があるということです。テストチームやQAチームは、そのようなリポジトリを管理してさまざまな候補ブランチを試すことができますが、どの日にどのブランチにプッシュしているのかについて全員が合意するように調整する必要があります。

言うまでもありませんが、すべてをバックアップするには、この制限なしに別のリモートリポジトリ(GitHubなど)を用意することも非常に良い考えです。私はその1つを "Origin"と呼び、Herokuには "heroku"を使うので、 "git Push"は常にOriginにすべてのバックアップをバックアップし、 "git Push heroku"は現在Herokuのマスターブランチにプッシュします。必要であれば。

これでうまくいくでしょうか。

 [remote "heroku"] 
 url = [email protected]:my-app.git 
プッシュ= + refs/heads/*:refs/heads/master 
 ____。]

私はHerokuでダミーのアプリを作成してそれを試してみることができると思いますが、私は実験を始める前にもっと経験豊富な人から聞いてみたいです。

取得に関しては、Herokuリポジトリが書き込み専用かどうかはあまり気にしません。私は、GitHubのように、自分の作品すべてのバックアップとクローンを作成するための別のリポジトリをまだ持っています。

脚注:この質問はに似ていますが、まったく同じというわけではありません。 Herokuでブランチ戦略を使用したGood Gitデプロイメント?

367

ワイルドカードを使うとき、それはrefspecの両側に存在しなければなりませんでした、それで+refs/heads/*:refs/heads/masterは働かないでしょう。しかし、あなたは+HEAD:refs/heads/masterを使うことができます:

git config remote.heroku.Push +HEAD:refs/heads/master

また、git Pushを使って直接行うこともできます。

git Push heroku +HEAD:master
git Push -f heroku HEAD:master
120
Chris Johnsen

https://devcenter.heroku.com/articles/git#deploy-code を参照してください。

$ git Push heroku yourbranch:master
1459
jassa
git Push -f heroku local_branch_name:master
45
Tomasz Mazur

また、git flowシステムとfeatureブランチを使っている場合は、

feature/mobile_additions

そして、stagingtwoというgitリモートで、Push to herokuへのコマンドは次のようになります。

git Push stagingtwo feature/mobile_additions:master
5
Jonathon Batson

最も安全なコマンドは、さまざまなローカルGitブランチをHeroku/masterにプッシュすることです。

git Push -f heroku branch_name:master

注: -fを使用せずにプッシュすることもできますが、他の開発者のプッシュとの競合を避けるために-f(強制フラグ)をお勧めします。

5
techdreams

あなたは heroku_san をチェックするべきです、それはこの問題を非常にうまく解決します。

たとえば、

git checkout BRANCH
rake qa deploy

また、新しいHerokuインスタンスを簡単にスピンアップしてトピックブランチを新しいサーバーにデプロイすることもできます。

git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates

そして、もちろん、頻繁に作業をすれば、より簡単なレーキタスクを作成できます。

4
jqr
2
David

Herokuのラボでは、githubアドオンを提供しています。これで、プッシュするブランチを指定できます。

Herokuによるこのベータ版の機能についての記事を参照してください。

当面はベータテスターとしてサインアップする必要があります。

1
irth

私はそれがあるべきだと思います

Push = refs/heads/*:refs/heads/*

代わりに...

0
ken