283
255

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitAdvent Calendar 2012

Day 5

Heroku にある Git リポジトリを楽に remote に設定する

Posted at

Heroku Advent Calendar (がもしもあったらそちら) に投稿するような内容だと思いますが,無かったので Git ネタということで.

複数マシンから 1 つの Heroku で動くアプリを開発する

まず,何かしらのアプリをある 1 台のマシン (例えばデスクトップ PC) で作成します.

それを Git リポジトリとして Heroku のサーバに push します.それにより deploy が行えるのが Heroku の大きな特徴の一つだと言えます.

さて,最初に push する人は,Heroku 上にアプリを作る作業を行いますから,

heroku create APPNAME

を行うと思います.するとこのコマンドが自動的にリモートリポジトリとして heroku という名前で git@heroku.com:APPNAME.git を登録してくれます.なので,この後は

git push heroku master

としてやるだけで deploy が出来るのですね.この辺りは Heroku 入門的なチュートリアルでよく見るところだと思います.

ここで,別のマシン (例えばノート PC) でこのアプリの開発と deploy を引き続き行いたくなったとします.

まず,先ほどのマシンを参照するなり Github や Bitbucket や自前の gitosis 等を参照したりするなりして,リポジトリを clone してくると思います.すると,リモートリポジトリとして heroku が登録されていません.なので

git remote add heroku git@heroku.com:APPNAME.git

をする必要があります.これが面倒だからと言って

git clone git@heroku.com:APPNAME.git

すると,今度は origingit@heroku.com:APPNAME.git になって何だか変な気分です.

いちいちリポジトリの URI を打ち込むのは面倒だ

今まで自分はずっと git remote add heroku ... をしていたのですが,先日こんなことをしなくてもいいんだと heroku help を見ていて気付きました.

サブコマンド git です.

heroku git:remote --app APPNAME

Github なり何なりから clone してきたリポジトリ内で,このコマンドを走らせるだけでリモートリポジトリ heroku が登録されます.

また,Heroku からまず第一に clone するのであれば,

heroku git:clone APPNAME

すると,APPNAME ディレクトリが作られそれがリポジトリになっていて,やはりリモートリポジトリ heroku が登録されています.origin はありません.

これは楽でいいですね.

heroku git のその他機能

  • clone するときにディレクトリ名を変えたい → heroku git:clone APPNAME DIRNAME
  • リモートリポジトリ名を heroku 以外 (例えば staging) にしたい → heroku git:remote APPNAME -r staging

まぁ,

heroku help git
heroku help git:remote
heroku help git:clone

を見れば大体分かります.

実装はどうなっているのか

いちいち git remote add heroku ... しなくてよくなったのはいいですが,実際このコマンドはどうやって実現されているのでしょうか?

  • git:clone の方

  • git:remote の方

…普通に git コマンドの文字列を作って実行しているだけですね.安心です.

ここのソースコードを読んで勉強するべきなのは,むしろ git:clone, git:remoteheroku コマンドの引数で与えると,どのようにして関数を呼び出すところに到達するか,だと思います.

バージョン情報

今回確認に使った環境・ツールのバージョンは以下の通りです.

  • Ruby 1.9.3-p194
  • Heroku Toolbelt 2.33.6
  • OS
  • Ubuntu 12.04 amd64 Desktop
  • Mac OS X 10.7.5

参考

283
255
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
283
255

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?