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

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

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

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

Heroku

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

Q&A

解決済

2回答

1439閲覧

【Git/Heroku】障害対応で発生した修正のみを本番に反映させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Git

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

Heroku

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

0グッド

0クリップ

投稿2018/11/18 13:59

お疲れ様です。下記質問です。

困っていること

障害対応で発生した修正のみを本番に反映させたい。
現在、Gitはだいたい下記の図のような感じです。
今の状況

開発中の修正はまだ本番に反映させず、今から入れるちょっとした修正のみを本番に反映させたいです。下記のような方法でいいのかなと思っているのですが、万が一本番に意図せぬデータがアップロードされてしまったら困るため試せていません。質問の投稿と並行でテスト用のGitを作成して試してみるつもりなのですが、もし分かる肩がいらっしゃいましたらご教授いただけませんでしょうか。

こういう感じかなと思っている方法

本番のコミット時点からブランチを生やして修正を入れ、本番にマージ(?)
(自分でも若干言っている意味がわからん)

よろしくお願いします。。

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

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

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

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

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

guest

回答2

0

複数のリポジトリ(Github、開発環境の作業ディレクトリ、本番環境)のmasterブランチを最新に更新するかしないかで、手作業で管理しているように見えます。
gitは分散リポジトリで、複数のリポジトリの内容が同一であることを保証する仕組みを提供しているものなので、複数のリポジトリの状態が異なっている状態を手作業で管理しようとするのは、ツールのメリットを生かせない使い方です。

本番環境にリリースする内容は別のブランチで管理するようにして、開発環境の作業ディレクトリで修正、動作確認等を実施し、本番環境のブランチをmasterからリリース用のブランチに切り替えて最新状態を取得するようにすればよいと思います。

【作業手順例】

開発環境

sh

1# (masterブランチ) 2$ git branch release 3$ git checkout release 4# (releaseブランチ) 5 6# 修正 7 8$ git add -u 9$ git commit 10$ git push origin release

本番環境

sh

1# (masterブランチ) 2$ git fetch --all 3$ git checkout release 4# (releaseブランチ)

投稿2018/11/18 22:27

tkmtmkt

総合スコア1800

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

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

退会済みユーザー

退会済みユーザー

2018/11/19 13:05

ご回答ありがとうございます。 >>本番環境にリリースする内容は別のブランチで管理するようにして、開発環境の作業ディレクトリで修正、動作確認等を実施し、本番環境のブランチをmasterからリリース用のブランチに切り替えて最新状態を取得するようにすればよいと思います。 ブランチモデルってやつですよね、一応知っていて、やってみようとも思ったのですが、マスターブランチ以外をリモートに反映させる方法が分からず断念しました。(その結果この使い方です) 今回の質問を通してマスター以外を本番に反映させられそうだと分かったので、そこらへんをまた調べ直してブランチモデルできるようにしたいと思います。 ご回答いただきありがとうございました。 >>本番環境のブランチをmasterからリリース用のブランチに切り替えて
tkmtmkt

2018/11/19 13:27

master以外をリモートに反映させる方法が分からないのであれば、開発ブランチをmasterでなくdevelopとかにするとよいと思います。masterはただのデフォルト名で特別な意味があるわけではないので。(ツールによって特別扱いしているのがいたいりするかもしれませんが、自分は今のところ見たことないです)
退会済みユーザー

退会済みユーザー

2018/11/20 11:19

精進します、どうもありがとうございます!
guest

0

ベストアンサー

なんか意味不明な事になっているな・・・。そもそもremoteとbranchは別概念なので・・・

まず本番用のremote(product)とテスト用のremote(dev)があるとしましょう。

ローカルにあるbranchとリモートのbranchとのヒモ付けは

dev_master -> dev/master product_master -> product/master

になっているとしましょう。

今やりたいのはproduct_masterに新たなcommitをしたい、ということでしょうか。

であれば単にproduct_masterをcheckoutして編集しstageしてcommitしてpushすればいいかと思われます。

ちなみにgit remote show <remote name>

$git remote show origin * remote origin Fetch URL: https://github.com/yumetodo/consoleapp.git Push URL: https://github.com/yumetodo/consoleapp.git HEAD branch: master Remote branches: fix/cmake-201810 tracked fix/remove_reserved_name tracked master tracked Local branch configured for 'git pull': fix/remove_reserved_name merges with remote fix/remove_reserved_name Local refs configured for 'git push': fix/remove_reserved_name pushes to fix/remove_reserved_name (up to date) master pushes to master (up to date)

みたいな情報が見れたりします。

投稿2018/11/18 15:43

yumetodo

総合スコア5850

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

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

退会済みユーザー

退会済みユーザー

2018/11/19 12:47

ご回答ありがとうございます。おっしゃる通り意味不明です、remoteとbranchは別概念というのも勉強になりました(コイツらよく分かんねえなと思いながら作業してきました) 本題ですが、 >>product_masterをcheckoutして編集しstageしてcommitしてpushすればいいかと思われます。 やってみました。 product_masterをcheckoutして(新規のブランチをつくり、障害対応の)編集しstageしてcommitして(product_masterに)pushしました。 また、あらかじめ開発していた分については追ってマージすることで反映させることができると確認取れました。多分これで大丈夫だと思います。Git、あー使いこなせてないなーと思う毎日です。わかばちゃんと学び直してみます。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問