-
Notifications
You must be signed in to change notification settings - Fork 9
Gitはパワフルなリビジョン管理システムです。 また、Herokuへアプリケーションをデプロイするための基本的な手段でもあります。 Herokuへコードをデプロイするために、Gitの達人になる必要はありませんが、 ソースコードをマネージするための素晴らしいツールの基礎を学ぶことの価値に気がつくことでしょう。
Herokuへアプリケーションをプッシュする前に、ローカルのGitリポジトリをイニシャライズし、 ファイルをコミットする必要があります。例えば、もしアプリケーションがmyappというディレクトリにあった場合、 そのディレクトリへ新規リポジトリを作成します。
:::term
$ cd myapp
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "my first commit"
Created initial commit 5df2d09: my first commit
44 files changed, 8393 insertions(+), 0 deletions(-)
create mode 100644 README
create mode 100644 Procfile
create mode 100644 app/controllers/source_file
...
これがローカルのリポジトリとなり、.git
ディレクトリの中に帰属することとなります。
この段階では、何かがどこかへ送られるようなことはありません。
そのため、Herokuへコードをデプロイするためには、リモートのリポジトリを作成し、プッシュする必要があります。
Gitリモートは、リモートリポジトリに関する参考文献です。
リモートリポジトリはいくつも管理することが出来ますが、今回は、Herokuへのリモートにフォーカスしてみたいと思います。
heroku create
コマンドは、Heroku上に新規のアプリケーションを作成します。
その際、アプリケーションのソースを受信するために使われるGitリモートも実行されます。
:::term
$ heroku create
Creating falling-wind-1624... done, stack is cedar
http://falling-wind-1624.herokuapp.com/ | [email protected]:falling-wind-1624.git
Git remote heroku added
ローカルのGit設定内で、リモートリポジトリを確認することも可能です。:
:::term
$ git remote -v
heroku [email protected]:falling-wind-1624.git (fetch)
heroku [email protected]:falling-wind-1624.git (push)
既存のGitリポジトリから、アプリケーションをクリエートした際に、与えられるGitのURLを使うことで、
リモートリポジトリを追加することも出来ます。
Gitのリポジトリと実存するアプリケーションを連携させるためにも、これを実行する必要があるでしょう。
heroku git:remote
コマンドは、アプリケーションのGitのURLに基づいたリモートリポジトリを追加します。
:::term
$ heroku git:remote -a falling-wind-1624
Git remote heroku added.
この例では、リモートをheroku
と命名していますが、-r other_remote_name
を実行することで、
リモートの名称を好きなように変更することが出来ます。異なる名称を使ってリモートを実行するより、
heroku
を使ってリモートすることに慣れているのであれば、この例の通り実行する方が易しく感じると思います。
1つだけ特別なリモート名:origin
が存在します。プッシュ時のデフォルト値となります。
origin
をリモート名として使うことで、git push heroku
の代わりに、git push
とだけ
タイプすることが許可されます。ですが、我々としては、明示的にリモート名を指定することを推奨しています。
アプリケーションを作成した当初は、空のリポジトリから始まることになります。 つまり、ブランチやコードが存在しない状態です。 最初のデプロイでは、リモートのブランチをプッシュする先を明示する必要があります。
:::term
$ git push heroku master
updating 'refs/heads/master'
...
このコマンドは、コードを初期段階で作成されたHerokuのリモートリポジトリへプッシュすることとなります。
Herokuへプッシュされるmaster
以外のブランチは、このコマンドではプッシュの対象外となり、無視されます。
ローカルで別ブランチで作業中であれば、Herokuへプッシュする前にマージすることが出来ますし、
ローカルのブランチを明示的にリモートのmaster
へプッシュすることも出来ます。
master
以外のブランチをプッシュするためには、この構文をお使い下さい。:
:::term
$ git push heroku yourbranch:master
開発用ブランチをHeroku上のステージングのアプリケーションへデプロイする際に使われる技術と同じものが、 プロダクション環境へのデプロイ時に使用されます。 詳細は、アプリケーションの複数環境を管理するにあります。
ソースコードをトラックするのに、既にSubversionやその他リビジョン管理システムをお使いでしたら、 どうすれば良いでしょうか?我々は、リビジョン管理としてGitがベストな選択肢であることを 信じてやみませんが、現在使用しているリビジョン管理システムの使用を止める必要はありません。 Gitは純粋にデプロイのメカニズムとなりうるだけで、その他ツールと共存することが可能です。
例えば、仮にSubversionをお使いでしたら、これまでの内容で上記したようにGitのリポジトリをイニシャライズして下さい。
その後で、Subversionのディレクトリを無視するよう.gitignore
ファイルへその内容を追加して下さい。
:::term
$ git init
$ echo .svn > .gitignore
$ git add .
$ git commit -m "using git for heroku deployment"
次に、Gitを無視するようSubversionに伝えて下さい。:
:::term
$ svn propset svn:ignore .git .
property 'svn:ignore' set on '.'
$ svn commit -m "ignoring git folder (git is used for heroku deployment)"
Herokuへデプロイしたい時はいつでも、下記のように実行します。:
:::term
$ git add -A
$ git commit -m "commit for deploy to heroku"
...
$ git push -f heroku
-
Git on Railsは、Railsアプリケーションを トラックする上で、Gitを使う場合の一般的な使用方法を説明しています。
-
Pro Git と The Git Community Book は、 Gitの全てをカバーしている素晴らしい本です。