Eclipse EGit の使い方(1/2)

Eclipse から Git 操作を行う、EGit の使い方についてまとめてみました。

この記事は 2014/3/25 にリリースされた EGit 3.3.1 を使い、Ubuntu もしくは Windows で操作しています。(たぶん Mac でも大丈夫です)

リポジトリを破壊したり、ファイルが多くあると遅くなっていたりしていたお騒がせな EGit でしたが、現在の所、通常の操作では問題なくなったように思います。

目次

  1. 導入
  2. ローカルリポジトリの作成
  3. ファイル操作
  4. リモートリポジトリに接続
  5. ローカルブランチの作成
  6. リベースインタラクティブ
  7. ブランチからのマージ1
  8. ブランチからのマージ2
  9. コンフリクトの解消
  10. リベース
  11. コミットコメント修正
  12. コミットリセット
  13. リバートコミット

このページでは、1〜6までを記載しています。(続きは力尽きたので次回…

導入

EGit は Eclipse 用の Git プラグインです。

JavaEE 版の Eclipse Kepler であれば、初期状態でバージョン 3.2 が導入されていますが、不具合の修正も多数ありますので、以下のアップデートサイトを登録し 3.3.1 の最新版をいれたほうが良いでしょう。

EGit – Download

To install via one of the update site URLs listed below, copy and paste it into the “Help > Install new software” dialog.

EGit can be installed in the following ways:

Main Update Site: http://download.eclipse.org/egit/updates (Recommended)

ヘルプ->新規ソフトウェアのインストールに、アップデートサイトを登録し、Eclipse Git Team Provider と JGit を導入します。

egit-install01

なお、EGit は Java の Git 実装である JGit を使って動きますので、別途 Git のコマンドラインツールなどを入れる必要はないです。

導入が完了すると、以下のビューが使えるようになります。

egit-install02

Git Repositories からリポジトリを操作するので出しておくと便利でしょう。

ローカルリポジトリの作成

新規プロジェクトを作成し、そのモジュールを Git のローカルリポジトリで管理するまでの手順です。既存のプロジェクトでも 2. 以降の手順で Git 管理下におくことができます。

1. Eclipse のプロジェクトを作成します。

egit-init01

2. プロジェクトを右クリックし、Team からプロジェクトの共有を選択します。

egit-init02

3. Git を選択します。

egit-init03

4. Use or create repositoru in parent folder of project にチェックを入れ、Create Repository をクリックします。

# Creation of reoisitories  in parent folder the Eclipse workspace は非推奨。ワークスペース上に Git のファイルがあると Eclipse が遅くなるのでということのようです。(が、特に問題無さそうなので自分はこちらを使っています)

egit-init04

5. ワークスペースと同じフォルダに .git リポジトリが作成されるので、完了をクリックします。

egit-init05

6. プロジェクト右クリックから、Team -> Commit をクリックします。

egit-init06

7. コミットダイアログが表示されます。 が、コミットの必要がない Eclipse の設定ファイルなどがあるので、いったんキャンセルします。

egit-init07

9. Eclipse 標準のフィルターだと隠しファイルが見えないため、見えるようにビューを一度カスタマイズします。

egit-init08

10. フィルターから .* リソースのチェックを外します。

egit-init09

11. 隠しファイルが見えるようになったので、コミットが不要なファイルを右クリックし、Team -> Ignore を指定し、Git の管理下から外します。(.gitignore が編集されます)

egit-init10

egit-init11

12. 管理するファイルが決まったので、再び Team -> Commit を選択します。

egit-init12

13. コミットダイアログで、コミット(インデックス)するファイルにチェックをつけ、コミットボタンを押下します。ヒストリービューからコミットの履歴を見ることができます。

egit-init13

egit-init14

ファイル操作

コミット後に修正を行ったファイルには > 印がつきます。

egit-edit01

コミット(HEAD)に戻したい(上書きしたい)時は、ファイル右クリック->置換->HEAD Revision を選択します。

egit-edit02

HEAD と比較したい場合は、比較-> HEAD Revision を選択します。(このへんの操作は Subclipse などと同様です)

egit-edit03

egit-edit04

ファイルの追加や削除は、Eclipse の右クリックの操作から行なってください。(OS からファイル操作をすると Git のインデックスがおかしなことになります)

ファイルの移動もドラッグアンドドロップを使うことで、Git が追従してきます。

egit-edit05

egit-edit06

リモートリポジトリへの接続

作成したローカルリポジトリを、リモートリポジトリに接続します。(ここでは Bitbucket のプライベートリポジトリに接続します)

1. ベアリポジトリを作成します。(Bitbucket 上に egit-test を作成しました)

b01

2. Git Repository ビューから、ローカルリポジトリの Remotes 指定し、Create Remote を押下します。

egit-remote01

3. Remote name を origin とし、Configure fetch を指定して OK ボタンを押下します。

egit-remote02

5. リモートリポジトリに 1. で作成したベアリポジトリを指定すると、Remotes が作成されます。

egit-remote03

egit-remote04

6. master ブランチをリモートと同期するために、ローカルブランチの master を選択し、Configure Branch を押下します。

egit-remote05

7. Remote に origin を、Upstream Branch を refs/heads/master とし、リモートリポジトリを追跡ブランチとして指定すると、Remote Traking が作成されます。

egit-remote06

egit-remote07

8. プロジェクトを右クリックし、Team -> Push to Upstream を押下し、リモートリポジトリにローカルリポジトリをプッシュします。

egit-remote08

b02

ローカルブランチの作成

Git の利点の一つは、ローカルブランチを手軽に作成でき、自分のタイミングで好きなようにコミット操作ができることです。それはドラクエのセーブに似ています。保存域は3箇所と言わず無限に(←真面目さがなくなってきた…

EGit でのローカルブランチの作成操作は次のようになります。

1. プロジェクト右クリックから Team -> Swicth To -> New Branch を選択します。

egit-branch01

2. Brach name を指定します。(ここでは devel ブランチにしました) master からブランチを作成したので、ヒストリーをみると、devel、master、origin/master の位置が一致しているのが分かります。

egit-branch02

egit-branch03

3. ワーキングディレクトリがdevel ローカルブランチにスイッチしたので、好きなように(恥ずかしい)コミットを入れながら、作業をしていきます。

egit-branch04

コミットを改変する場合

ふと次の日見た devel のコミットは、やっぱりあんまりだったので、コミットを改変して正しいものにするなどの手順です(?)。(rebase -i)

1. ヒストリーから親にするコミットを右クリックし、Rebase Interactive を押下します。プロジェクトのマーカーが Rebase Interactive に変わります。

egit-rebasei01

egit-rebasei02

2. Git Interractive Rebase ビューを開き、編集したいコミットに対してそれぞれの操作を指定して Start を押下します。(ここでは、2つのコミットを SQUASH 指定し、コミットをひとつにまとめています)

egit-rebasei03

3. 本コミットのメッセージを指定し、OK ボタンを押下すると、コミットが指定通りに改変されます。

egit-rebasei04

egit-rebasei05

というわけで次回は、できあがった devel を master にマージしてリモートリポジトリにプッシュする「ブランチからのマージ1」から書きます。

続く…

baserCMS ショッピングカートコンセプトテーマ baserCart

第2回 baserCMS デザインテーマコンテストで「店舗系テーマ賞」を頂きました!第1回に続き、2回目の受賞となり嬉しく思っています 😀

受賞者発表!! | 第2回 baserCMS デザインテーマコンテスト

制作:こもりこめろましゃ
baserCart (basercart-1.0.0)
デザイン性と機能性が両立できる baserCMS を活かすべく制作したショッピングカートサイトテーマです。
森のお店をイメージしたかわいいデザインにしてみました。
デザイン、イラスト、レスポンシブを含むマークアップ、商品・注文管理を含むコンテンツ管理と、ウェブサイトで使われる重要な要素を盛り込み、baserCMS の性能をめいいっぱい活用したテーマとなっています。
[ 審査員からのコメント ]
baserCMSの機能を存分に活用した作品です。プラグインを使って簡易ショッピングカート機能を実現している所など、baserCMSの可能性を広げてくれた作品です。

制作は「こもりこめろましゃ」ということで、コモモ(デザイン・ライティング・テーマ部)、モリコ(HTML・JS)、マリメロ(イラスト)、ひろましゃ(プラグイン部)の4人チームで行いました。

テーマを basercms.net に配置していただいておりますので、以下から実際に動いているところをみることができます。ファイルのダウンロードは 3/28 から始まる「baserマーケット」からダウンロードできるようになるとのことです!

商品一覧|basercart

モリコママは、ちょっとおせっかいで、ちょっとおっちょこちょいなシマリスのおかあさん。不思議の森のみんなは、モリコママの手づくりお菓子がだ〜い好き。モリコママは、美味しい手づくりお菓子を世界中の人たちに届けたいなぁって思いました。

コンテストでは応募の多くが汎用的なテーマとなることを予想しつつ、独自の世界観と baserCMS の可能性を表現することを目標に制作を進めました。思い描いていた通り完成できて、賞もいただけて本当に良かったです。メンバーのみなさまありがとうございました 😀

かわいらしい見た目とともに、広範囲に baserCMS の機能を活用したテーマとなっています。このブログのエントリーをサポートサイト代わりにして紹介してみたいと思います。

公開サイト部分

サイトの訪問者が見える部分の構成は次のようになっています。

  • 商品一覧(トップページ)

basercart-publish-01

  • 商品一覧(タグ分類)

basercart-publish-02

  • 商品詳細

basercart-publish-03

  • ショッピングカート

basercart-publish-04

  • 固定ページ・ブログ・お問い合わせメール(baserCMS基本機能)

商品は一覧・タグ分類ができ、商品名や最大4種類の画像、価格の情報を持っています。また、ショッピングカートには注文フォームが用意されています。

少しだけ baserCMS 使われたことがある方には、これはどうやったんだろうと思われる部分だと考えますが、バックエンドの実装的には今回のキモとして定めた部分でした。

baserCMS のソースコードなどを見ると「Based Website Development Project」とあります。つまり、baserCMS は CMS のベースともなるソフトウェアです。

WordPress がシステムの持つデータの形にサイトを当てはめる CMS とすれば、baserCMS はデータの形ごと作成できる CMS です。

今回の応募したテーマを WordPress でつくれば、商品情報を投稿タイプとカスタムフィールドに、タクソノミーで条件抽出するような実装となると思いますが、baserCMS ではテーブル構成やそのリレーション・インデックスを1から設計することが可能です。

作成したデータの形は、スキーマ管理、ユーザ権限やファイルのアップロード、テーマシステム、管理画面用の部品などなど、baserCMS が持つ力をたくさん借りながらウェブサイトとして構成することができます。

管理画面

  • 商品管理

basercart-admin-01

basercart-admin-02

  • タグ管理

basercart-admin-03

basercart-admin-04

  • 注文管理

basercart-admin-10

basercart-admin-11

商品系では、商品の一覧・編集、画像のアップロードや、多対多で関連するタグなどを使うことができます。注文ではステータスの変更や、注文明細の閲覧をすることができます。

おそらくテーブル構成などは、管理画面からのご想像通りです。実はタグやスラッグなどの部分は WordPress に由来してつくったりしています。テーマのダウンロードまでお楽しみにです。

CakePHP 初挑戦なのもあって、モデルとコントローラが、エンティティとサービスよりに心がブレている部分なんかがあるのですが、少しづつ修正していきたいです。

うまくできたら、本テーマはひと通りやりそうな実装がそろっていのではないかと思いますので、どこかで時間をつくって「baserCartの作り方」的なドキュメントを書こうかと思っています。 🙂

最後になりましたが、baserCMS テーマコンテスト実行委員のみなさま、大変お世話になりました。ありがとうございました!

SaCSS with WordBench 札幌, Late 2013 札幌のフォローアップ

12/14 札幌にて「SaCSS with WordBench 札幌, Late 2013」が開催され、スピーカーとして登壇させていただきました!

71A_5406-miniWordBench 札幌」は現在、年一度の OSC 北海道のセミナー・ブースが主な活動の拠点となっておりますが、今回はハムさんのご支援をうけ SaCSS(sapporo.css) と共同開催。東京よりまがりんさん、新潟よりをかもとにーさんをお招きするという豪華な内容となりました。 🙂

SaCSS WordBench Sapporo,Late2013

『SaCSS(サックス)』は札幌で主にコーダー(マークアップエンジニア)やWebデザイナー向けに、HTMLやCSS、JavaScriptなどフロントエンドの内容を中心にほぼ毎月勉強会を開催している団体です。
SaCSSは「Sapporo Cording Study & Seminar」もしくは「Sapporo.CSS」を省略した形で、参加者に「サックス」の愛称でよばれております。

1470304_632103803523442_1341714777_n自分は「WordPress を取り巻くセキュリティー設計」ということでお話させていただきました。 フォローアップ的に、ここに内容をまとめてみたいと思います。

  • 情報セキュリティーとは大きく、機密性・完全性・可用性という3つの要素で構成されている。
  • WordPressにおいて三要素を保つために必要なこと。
    • FTP、SSH、MySQL、WordPress などのユーザ・パスワード管理運用
    • ネットワーク経路の安全化
    • ソフトウェアのアップデート
    • データのバックアップ
    • 日々のサイト監視
    • 必要ならば、DoS 攻撃などによるサイトダウンを防ぐ対策

セキュリティーを保つために行うことはコンピュータ的な要素ももちろんありますが、サイト監視やパスワード管理など人間が日常的に運用しなければいけない部分も沢山あります。また、インシデント発生時の連絡系統や、回復手順などの運用フローを事前に作成することも大切です。

勉強会アンケートにて、WordPress サイトのバックアップ法の具体的な方法についてご質問をいただきました。ここでいくつか紹介いたします。 🙂

VaultPress – WordPress Backup and Security
WordPress の開発元 automattic 社が運用している、WordPress のバックアップサービスです。有料となりますが、プラグインの導入とアカウントの登録だけで、バックアップ・リストアが可能になります。
WordPressエンタープライズサポート|め組用心棒
デジタルキューブさんが運営している、きめ細かなユーザサポートサービスです。バックアップもお任せすることができます。こちらは日本語でサービスを受けることができます。
BackWPup Free – WordPress Backup Plugin
WordPress のプラグインによるバックアップの実装です。導入すると、メールや各種クラウドのストレージに WordPress サイトのバックアップを行うことができます。

ちなみに、このサイト hiromasa.another は、cron と シェルスクリプト(mysqldump と rsync)を自宅のサーバに配置し、週次でバックアップを行なっています。

WordPress のバックアップは各種サービスやプラグインのおかげで随分手軽になりましたが、意外とリストア(戻し)をした経験がある方は少ないのではないでしょうか。転ばぬ先のバックアップ。機会を見て、戻しの練習もしてもらえたら良いなと思います。 🙂

さて、勉強会の翌日は SaCSS メンバー&まがりんさんと支笏湖丸駒温泉へ。

529539_479694562149871_742478106_n

まがりんにより寒中全裸待機(露天風呂!)といった大技も繰り出され、楽しいひと時でした。 ありがとうございました。 😀