質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

解決済

1回答

3499閲覧

【Heroku/Git】HerokuでどうGitのブランチモデルを運用していますか?

退会済みユーザー

退会済みユーザー

総合スコア0

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

1クリップ

投稿2018/11/22 03:16

お疲れ様です。ヨチヨチですが下記質問です。

知りたいこと

herokuはブランチモデルでの運用を想定していないように思えるのですが、
一般的にみなさんはどのようにherokuでGitを運用してらっしゃるのでしょうか?

経緯

1. 当初考えていたこと
Djangoで作ったアプリをGitでコード管理し、Herokuで公開しようとしています。
Gitを使うのはこれが初めてだったのですが、Gitの上手い運用方法について調べるとブランチモデルというものが見つかりました。

自分の理解した限りですと、ブランチモデルというのはざっくり、
⓪本番用と開発用にサーバを二つ用意する
①本番環境にひもづくリポジトリには安定稼働版しかpushしない
②開発用のブランチ(develop)があり、そこで開発&検証できたら本番へマージする
こんな感じなんだと理解しました。

どうせならこの方法でやってみようと考え、まず下記のような感じでサーバとリポジトリを対応させようと決めました。

環境対応させたいリポジトリ
本番環境heroku/master
テスト環境staging/develop

2. 問題が発生
ただ、運用を開始したところ問題が発生しました。
Herokuの公式ドキュメントを読むと、下記のようにありHerokuではmasterという名前以外のリポジトリからはデプロイができません。

Note that Heroku only deploys code that you push to the master branch of the heroku remote. Pushing code to another branch of the remote has no effect.

HerokuDocument

また、回避策として
git push heroku testbranch:master
というようなコマンドが用意されているようです。(回避策のリンク

3. 回避策
ということで、今自分の持っている情報ですと、developで開発したコードは全て、
git push staging develop:masterの形でデプロイし、安定稼働の保証が取れた時点でmasterに取り込み、heroku/masterにデプロイするということになるかと思います。

ただ、本当にこんなやり方をみなさんしてらっしゃるのでしょうか? ヨチヨチゆえ気になったため、質問させてください。

以上、よろしくお願いします。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

「本番環境にひもづくリポジトリには安定稼働版しかpushしない」というのは、gitが「全てのリポジトリが同じフルデータのコピーを持つ」というものであるため的を外しています。そのため、開発のリポジトリと本番のリポジトリを分けるという発想がまず間違っています。

単に、masterという名前のブランチを「開発に」使わなければいいだけです。
developみたいな名前の「ブランチ」を作り、それをメインストリームとして開発を進めてください。
masterブランチは、常に「リリース中のものと同じ」になるようにしてください。即ち、コミットを作成しないようにします。
最後に、リリースをする「度に」、developmasterにマージして、それをpushするだけです。
そうすることで、developは「開発の履歴」、masterは「リリースの履歴」となるのです。

投稿2018/11/24 04:25

tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/04 11:08

ありがとうございます!ベストアンサーに選ばせていただいたときはまだ理解が浅く理解できなかったのですが、今やっと理解できました。 masterにコミットせず、毎回developをマージする、というところが大変参考になりました。ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問