Help us understand the problem. What is going on with this article?

さくらVPSにGitの中央リポジトリを置く(for Mac)

More than 1 year has passed since last update.


この記事は以下の記事に書きなおしています。
CentOS - gitを使ったデプロイ方法 - Qiita

概要

  • Localで開発しているプロジェクトをGitで管理したい。バックアップも兼ねて。
  • でもGitHubにリモートリポジトリ(中央リポジトリ)を置いちゃうと公開されるのでそれは無理
  • DropBoxに置いてサーバーからPullしたらいいんじゃね?
  • でもそれサーバーにDropBox入れないといけないのでめんどくさそう。
  • つーか、本番環境にリモートリポジトリ置いたらいいんじゃね?

と言うわけで、本番環境のさくらVPSにGitのリモートリポジトリを置くことにしました。

調べてみるとVPS側に「Gitサーバーを立てる」みたいな記事を見つけたんですが、そんなことしなくても実現可能だとわかりました。

(それ以前にGitサーバーの意味が未だにわかりません)

メリット

  1. 本番環境に同期できる
  2. 以前のバージョンに簡単に戻せる
  3. 複数のPCで開発できる

1. 本番環境に同期できる

以前はrsyncを使って本番環境にプロジェクトをUpLoadしていましたが、
もちろんGit経由でも簡単にできます。

LocalでCommit&Pushして、RemoteでPullするだけです。

2. 以前のバージョンに簡単に戻せる

Localでテストして万全の状態でRemoteに上げてバージョンアップしたつもりが、
本番環境ではうまく動かないなんてことがよくあります。

そんな時もGitですから簡単に以前のバージョンに戻すことができます。

3. 複数のPCで開発できる

なんかもう当たり前のことばっかりで申し訳ないんですが、
git cloneすれば別のPCも開発に参加できます。

やってみよう!(前準備)

Macはもともとターミナルから簡単にSSHでサーバーにログインできますが、
以下の設定をするともっと簡単になります。

~/.ssh/config というファイルを作ります。

host hoge
  HostName     ***.***.***.**
  Port         12345
  User         myname
  IdentityFile ~/.ssh/id_rsa
  • HostName :IPアドレス or ドメイン
  • Port :設定してある接続用のPort番号
  • User :ログインユーザー名
  • IdentityFile :ssh鍵の場所

以上の様に設定していると
ssh hoge
だけでログインできるようになります。
そして
hoge:/home/hoge/
という風にパスを指定することができます。

やってみよう!

それでは本題です。

1. まずLocalをGit initしておく

Git init MyProject

もしくはSourceTreeとかでGitリポジトリ作成(開発中のプロジェクトでもOK)

2. VPSでgit init --bareする

cd /home/hoge/git
git init --bare MyProject.git

3. Localでgit remote addする

git remote add server hoge:/home/hoge/git/MyProject.git

追記: 2015/02/28

すでにプロジェクトのremoteをgithub等にしている場合はoriginを追加して、複数のremoteに同時にpushすることができます。

.git/configにurlを追加します。

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@bitbucket.org:myname/MyProject.git
    url = hoge:/home/hoge/git/MyProject.git

4. LocalでCommit&Pushする。

(SourceTreeとかでテキトーにやっちゃってください)

5. VPSの中央リポジトリからVPSの別の場所にgit cloneする。

cd /home/projects
mkdir MyProject
git clone /home/hoge/git/MyProject.git

上記が完了したらあとはLocalでガシガシ開発して

LocalでCommit&Push > VPSでPull

これだけでUpLoadできるようになります。

6. remoteにpushしたら勝手にVPSでpullする

追記: 2015/02/28
コメント欄で教えていただきました。

VPSの中央リポジトリのpost-receiveに設定を書き込みます。

cloneした方ではなく、bareの方です。(ここ注意)

vim /home/hoge/git/MyProject.git/hooks/post-receive
#!/bin/sh
cd /home/projects/MyProject
git --git-dir=.git pull origin master

ここまで設定したら、LocalでCommit&Pushだけでアップロードできるようになります。

以上です。

__mick
nodejs,coffee-script等で遊んでいます。 https://github.com/mick-whats
https://twitter.com/mick_x_
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away