23
21

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 4

Git/Githubで、プロダクションと最新のmasterとの差分を表示する - Wantedlyのデプロイプロセスより

Last updated at Posted at 2012-12-12

Git AdventCalendar 1日目で@yaottiがQiitaでよく使うgitコマンドを紹介してくれたので、僕も、僕の勤めているWantedlyで、新しいバージョンのプロダクトをデプロイするときに使っているgitコマンドを紹介しようと思います。

ちなみにWantedlyは最近Qiitaチームアカウントを作ってもらいました!皆さん見てみてくださいね。

Wantedlyの開発運用体制の概略 (なぜ、この差分表示が必要か)

WantedlyはRuby on Railsで開発を行い、プロダクションサーバーはHerokuでホスティングしています。

開発者は全員(5-10人程度)が、ひとつのGithubレポジトリを共有した上で、

  • 新しい変更は、<開発者のgithub-id>/<機能名> (例:awakia/add-awesome-feature) のブランチを作って、masterに対してPull Requestを送る。

  • 送られたPull Requestのコードレビューをして、よさそうであればマージ

  • ある程度変更が溜まったら、適当なタイミングで最新のmasterをherokuにデプロイ

というフローで開発・運用しています。もう少し規模が大きくなってきたら、次にデプロイするstableなブランチと、最新のブランチの2つを用意する必要があるかもしれませんが、現状では最新のmasterをそのままデプロイしたいことが多いので、こうしています。

Wantedlyは、「全員が責任をもって開発・保守しよう!」という思いもあって、エンジニア全員が、マージ、デプロイを行っています。

そのため、前の人がどこまでデプロイしていて、今回どのような変更が入るのか確認する必要が出てきます。
今回はそんな時のためのgitコマンドを紹介します。

ブランチ名の仮定

以下では

  • Github上のリモートリポジトリ名がorigin
  • Heroku(プロダクションサーバー)上のリモートリポジトリ名がheroku

であることを仮定します。別の名前を使っている人は適宜置き換えてください。

コマンドライン上で見る

どのファイルに変更を加えたか知る

git fetch heroku master && git fetch origin master && git diff --name-only heroku/master..origin/master

ここでは特にDBのスキーマをいじる変更が無いかチェックします。DBをいじる変更があると、一度サーバーを止めてデプロイしないといけない可能性があります。

どんなコミットがあったか知る

git fetch heroku master && git fetch origin master && git log heroku/master..origin/master

ちなみに自分はgit logを使うときは

git log --stat --pretty=format:'%C(yellow)%h %Cgreen%cr %Cblue%cn %Cred%d %Creset%s'

のオプション付きで使います。(エイリアスを作ってます。)

Github上で見る

git fetch heroku master && open https://github.com/<ユーザー名>/<リポジトリ名>/compare/`git rev-parse --short heroku/master`...master

コミットが多くなるとGithubの方が見やすいので、こっちを使ったりします。

解説 (Git/Githubで2点間の変更を見る)

実運用では、間違えて過去の情報を参照しないようにgit fetchして最新の情報に更新することを保証しています。
しかし、ポイントは、gitで2点間のdiffを取る部分だけで、それは以下のように実現できます。

git diff <ブランチ1>..<ブランチ2>

このdiffの部分を目的に応じてdiff --name-onlyだったりlogだったりに変えると良いです。

そして、これと同じ部分をGithubで見るには

https://github.com/<ユーザー名>/<リポジトリ名>/compare/<ブランチ1>...<ブランチ2>

をブラウザで開けばいいだけです。

23
21
3

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
23
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?