Gitを1からようやく始める、Git運用パータン例
gitはじよめようって時のレベル(3ヶ月前)
- なんかややこしそう.....覚えたとこで役立つ?
- 使って仕事が余計にややこしくなるんでは?
- 概念とか使い方とか覚えるのに頭使うしつかず離れずで距離おくか...
- WEB制作でGITを使えば便利になったというお話をよく聞く
- svnでバージョン管理初めて1年程(tortise svn)
- 共有環境でバージョン管理してたら、コンフリクトしたら、逃げたいし放置したい
- javaとjavascript、gitとgithubは似たような同意語?
- gitを見ない日はないしマストアイテムとようやく気づいたけども...SVNでいいんでねーの
- ブランチってなんか公園で休憩するような、ベンチとブランコを混ぜた乗り物でないの?
- gitgitうるさいぁ
自分のgit管理に関しての3ヶ月後のレベル
コマンド覚えてgit 触ってる
- git add
- git commit -m
- git push origin master
- git pull origin develop
- git checkout
- git merge develop
- git log
- git status
- git checkout akfjahkgd89fvilhd98439238kbugels path/file
- git branch develop
- git remote -v
- git fetch
- git reset --hard HEAD^
- git checkout -b newbranch origin/newbranch
- git init
- git clone
- git submodule add git:github.com/~~
- git submodule init
- git submodule update
- git rm
- git rm --cache
- git samasama
- git様様、プロジェクトの管理が大きく変わるよね
- git管理しとけばとりあえずみんなでファイル触りまくってもプロジェクト進みやすいよね
- gitでやれば、ファイルあげなくてもがさっといけるよね O型な自分にはあってる
- いろんな開発環境作って、綱渡りなことも試せるしいいね
- このようなコマンドやオプションにははかりしれない便利なものがあるね〜
- gitのない世の中なんて...考えれんよね
- 3ヶ月前の自分の考え方が恥ずかしい
WEBサイト制作、WEBサイトシステム制作等をメインに行います 上記コマンドを利用して、サイトを切り替えて公開ができる方法をご紹介 〜 TOP・メインコンテンツ先方案内編〜 ■プロジェクトテーマ CMSを組み込んだ、新規立ち上げコーポレートサイト制作 シチュエーション 開発環境
- リモートリポジトリ ホスティングサービスVPSサーバ上 ← ここにgitがいます
- デザイン制作環境 社内VPSサーバ上 ← ここにgitがいます
- 開発環境はローカルPC上 ← ここにgitがいます
- 公開環境は、ホスティングVPSサーバ ← ここにgitが2ついます
登場される方は デザイナ、エンジニア、クライアント様
クライアント様 テニスのgutは腸でできてるからgutなんだよ。ガッツポーズのgutとgutは同じ英単語ですってね
エンジニア とりあえずプロジェクトディレクトリと、リモートリポジトリ作成します
リモートリポジトリ作成しましたよ じゃあデザイン制作環境にリポジトリ作成します
クローンすれば、バージョン管理配下に置かれます。
※ここでSSH接続を鍵認証、.ssh/config にリモート設定しておけば楽です SSHで行う場合は以下参考サイト http://easyramble.com/access-gitrepo-over-ssh.html
制作ディレクトリ/project projectディレクトリがgitによってクローンされましたよ。
デザイナ html,css,jsのファイルやCMS等を導入しサイト制作進めていきます。 の前に、※開発用ブランチへ移動して、masterブランチでファイル編集はしないというルール使用らしいよ
エンジニア masterは一方通行が原則で、軸となるブランチです。 まず2本のブランチにすることで、開発環境、本番環境を分けることで、本番環境のリビジョンを大きく区切ることができるんで本番のリビジョン管理がわかりやすくなりますね 本番環境でバージョン戻すときに、区切りの位置がわかりやすくなることがメリットとかうんたらかんたらでね...
※git flowいれたらgit のチーターになれますよっと http://danielkummer.github.io/git-flow-cheatsheet/index.ja_JP.html
- git branch develop
- git checkout develop
この状態で制作始めます ファイル作成後、作業の切りの良いところで
- git add ファイルパス
→addとは、ファイルをインデックスに追加、更新しますという指示作業のようなもの
- git commit -m 'コミットします'
commitとは、addしたものをリポジトリにいれ登録する作業 ※いざ戻したいところに戻せるようにコミットログは、正確に書くことで幸せがおとずれます
エンジニア 公開サーバ上にリポジトリ設定 リモートと同じくクローンしてディレクトリ作成しまっす
- git clone -b master ssh://[リモートサーバuser]@[リモートサーバ名 or ip] /home/admin/project/project.git
※公開・公開用テストサーバ上は原則masterブランチのみを使用します。
デザイナ TOPとメインコンテンツを一旦先方に案内しましょうか?
エンジニア じゃあ今のチェックバックいりますよね?
デザイナ デザイン制作環境に今の状態あげて社内でチェックバックしてもらいましょう
エンジニア そうですね?じゃあ一旦開発関連のファイルもまとめましょうか?
デザイナ うん 制作環境はコミット済なんで、まとめあげてくれる?
エンジニア デザイン制作環境からリモートに一旦アップしま〜す。
- git push origin develop
OKいけましたよっと 自分のところでマージします
- git pull orgin develop
ファイル読み込まれた、コンフリクトしてないOK〜 じゃあ社内案内流してチェックバックしてもらいます。 社内チェッカー
- レイアウトずれてるよ
- 画像伸びてる
- 文言かえたほうがいい
- スマホじゃあなんかあれやね
※前のメインビジュアルの方がいいんでね?
デザイナ まじか〜修正しますか じゃあ上記対応します 新規修正はファイル修正してっと... 画像前のやつに差し戻すか。こんな時GITでいけんよね
- git log
どのコミットかなっと.... この画像だけこれに戻したい どうすんの?
エンジニア コミットログに有る ede82fe636a0145a8ca686bf8342544ad4349d みたいなやつを教えて下さい
デザイナ ede82fe63ajk637676l5a8ca686bf8342544ad4349d のfiles/main.jpgにしたい
エンジニア じゃあ指定のコミットのファイル指定して戻しましょうか
- git checkout ede82fe63ajk637676l5a8ca686bf8342544ad4349d files/main.jpg
ブラウザで見てみてください。
デザイナ おっ画像変わってる 修正終わったしもっかいあげました じゃあこれでチェックバック2するか? 社内チェッカー
- 画像やっぱ前のがいい
デザイナ (どの前のよ ちっ... (今のデザインには最新のメイン画像が必要やからまた最新にして押し通すぜ
- git checkout developっと
このデザインにはこのビジュアルがあるからでありまして..... 社内チェッカー いいんでないでしょうか
デザイナ じゃあこれでいきますか
- git push origin develop
先方案内第一弾完了 これ公開用サーバのテスト環境にあげてほしいです
エンジニア じゃあマージしま〜す
- git pull origin develop
- git checkout master
- git merge develop
おっけ〜コンフリクトないしこれでリモートmasterにあげます
- git push orgin master
- ssh 公開用サーバに接続
テスト公開ドメインディレクトリに移動して
- cd ~/test/project
- git pull origin master
公開用サーバ確認願います
デザイナ OKじゃあ先方に案内しまっす。
クライアント様 いい感じですね〜ありがとうございます じゃあ、これの公開3ヶ月先なんでとりあえずカミングスーンのページ作ってもらえます?
デザイナ えっ?
クライアント様 えっ?
デザイナ 分かりました。ただ今回カミングスーンは、見積もっておりませんので見積もらせていただきます? こちらの金額でよろしいでしょうか?
クライアント様 えっ?..ええ..お願いいたします。
デザイナ お願いいたします。 カミングスーン作成事案発生しました。 作成します。
エンジニア 急な話ですね〜でもきっちりさばきこなすデザイナ氏すごい てっことで、カミングスーン公開用ブランチがあれば、一時公開もサクサクですね。 とりあえずローカルにカミングスーン公開用ブランチ作成しまっす
- git branch commigsoon
- git push origin commigsoon
制作統合環境にもcommigsoonブランチいれますね
- git checkout -b commigsoon origin commigsoon
これで、一時公開用ページ作成お願いいたします
デザイナ OK〜作成します できました
- git add files/index.php
- git commit -m '一時公開用TOPページ'
- git push origin commigsoon
じゃあこれ先方にみせますかっと 公開用テストにあげてもらえますか?
エンジニア 了解です
- ssh 公開用テストディレクトリに接続
- cd ~/test/project
- git checkout -b commigsoon origin commigsoon
先方案内お願いいたします。
デザイナ OK〜クライアント様いかがでしょうか?
クライアント様 あの見積でこんなデザイン...いやぁ素晴らしいですね 会社のイメージアップへの近道ができた気がします ありがとうございます カミングスーン公開お願いいたします
デザイナ うけたまわりました。 (うっし!完璧!! エンジニア氏カミングスーン公開して
エンジニア OK!良かったですね〜 じゃあ本番公開用ディレクトリに移動してっと
- cd ~/www/project
- git checkout -b commigsoon orgin commigsoon
本番公開できましたよっと
デザイナ サクッといくね〜素晴らしいねgitって じゃあ、全コンテンツの制作・開発すすめるか! ブランチ戻して、制作進めたらいいんよね?
エンジニア そうです、その通りです。 じゃあブランチ開発用ブランチに戻して置いてください
- git checkout develop
じゃあ作業再開っと 忘れないうちに、テスト公開用もマスターに戻しておくか ssh テスト公開用接続
- git checkout master
デザイナ クライアント様 今後の開発の進捗は公開テスト用環境でどんどん更新していきますので 3ヶ月後を楽しみにお待ちくださいませ
使用コマンド要約
プロジェクトを作成してgit管理する
- init
立ち上げたプロジェクトにファイルを積んでいく
- add commit
環境違えど、どこにでもあげて、更新ができる。(mac linux windows)
- cloene pull
差し戻したい場合は、指定したところに戻れる
- log status checkout
複数人編集したファイルが、gitによって一つの成果物によしなにまとめあげてくれる
- merge push pull
別の開発を進めておける
- branch checkout
今回のメリット要約
- 画像元に戻してとかはcheckoutでいい感じ
- 一時公開など、開発が分岐してしまう場合にはbranchでいい感じ
- 環境によって、ファイルの差分が必要、でもそれがコマンド一つで管理できるからいい感じ
- 複数人で作業してファイルを統合するときにはgitがいてくれて助かる。
- git覚えるのに使っていくほどに便利さがわかって、どんどん身についてコストを感じられない
- 覚えたての自分の知識が、git知らない人にも派生して開発環境がどんどんスマートになっていってすごい
今回の事案でエンジニアは語らなかったが困っておられたポイント
mergeしたとき何かコンフリクトして先に進まないし、もうイヤ
- mergetoolや、手動でマージするときは必要
違うブランチのPullしてしもた
- 焦らず、戻す。git reset --hard HEAD^等
sass等のキャッシュファイルもバージョン管理されてしまってカオスな感じになってしまった git ignoreする改行コードがおかしくなってコンフリクトして、イヤ
以下のサイトに助けられました。ありがとうございます。 http://qiita.com/shuhei/items/2da839de8803cb335f86
・パーミッションがサーバによって変わってその度ファイルが更新対象になってgit statusが役に立たない
以下のサイトでスッキリして、ファイルの変更がわかりやすくなりました。 http://tetsuwo.tumblr.com/post/36066698390/git-chmod-git-config
Gitを1からようやく始める、Git運用パータン例