読者です 読者をやめる 読者になる 読者になる

bz0のにっき

quick and dirty prototype

Gitの運用について

Gitの運用に関して

やったことのメモなので、まとまりなくてごちゃごちゃしてます。。。

ブランチごとの役割

通常の開発
  • featureブランチ→(マージ)developブランチ→(マージ)releaseブランチ→(マージ)master
  • メリット
    • 開発者のローカルで、featureブランチ作成して開発を進めることができる
    • releaseブランチで、開発とリリースの時差によるズレに対応できる(コンフリクトを解消する)
不具合が起きたら
  • hot-fixブランチ→(マージ)master
  • メリット
    • すぐにmasterにマージできるので素早く対処できる

Gitを最大限に活用できる「Git flow」で、効率よく開発を進めよう! | Git編:一歩踏み出すフロントエンド入門

ローカルでの開発

source-tree

ローカルでは、コマンド使わずGUIで。
git-flowの運用もボタン押すだけでブランチ生成してマージしてと
ほぼ自動でやってくれるので楽です。

sourcetree で Git Flow を使ってみる - 新しい日記

[エラー解決]hotfixのブランチを切ろうとしたときに出たエラー
fatal: Working tree contains unstaged changes. Aborting.

コミットし忘れが残っていると上記のようなエラーが出ます。


.gitignore

gitignoreの運用
.gitignoreについて - Qiita


gitignoreの自動生成
https://www.gitignore.io/

netbeans(PHP用のIDEとして利用してます):
netbeansメタデータリポジトリ対象から除外する
private ディレクトリには、システムにインストールされている IDE 専用の情報が含まれているため
NetBeansのbuild.xmlとnbprojectはSCMに突っ込んでヨロシ - marsのメモ

giboで自動生成:
http://qiita.com/tmknom/items/c4bcebe17d25381fa45d

.git

.gitディレクトリをサーバで公開されないようにします。
.htaccessをルートディレクトリに生成します。

RewriteEngine on
RewriteRule "(^|/)(CVS|\.svn|\.git)/" - [F]

リモートリポジトリ

BitBucket

リモートリポジトリに利用してます。

プライベートリポジトリが作れて容量無制限で5ユーザまでなら
無料で利用できる点がよいです。

※2GB以上はプッシュできないですが。

Bitbucket - プロフェッショナルチーム用 Git ソリューション | Atlassian
GithubとBitbucketのストレージ周りのお話 - Qiita

webhook

webhookを利用して、プッシュされたらサーバへ自動プルされるようにしています。

Bitbucket や GitHub で自動デプロイするためのサンプル PHP スクリプトを拾って改造してみた - アルケミスタの住人

git clone

webhookのリクエストを受け取ったphpファイルが、git pull実行するシェルファイルを実行するという
仕組みになるので、phpを動かす「apache」ユーザで「git clone」します。

※他のユーザで実行してしまうと、ファイル権限がなくて更新できない事がある為

# su -s /bin/bash apache
# git clone git@bitbucket.org:xxxx.git
git cloneでエラー
fatal: could not create work tree dir 'xxxxxxxx'.: ????????

ディレクトリの書き込み権限がなかったことが原因でした。
参考:http://d.hatena.ne.jp/oggata/20120601/1338509023