ソフトウェアに疎いディレクターが教えてもらいながらやるGitでのバージョン管理指南 ~SourceTreeとBitbucketの導入編~

ソフトウェアに疎いディレクターが教えてもらいながらやるGitでのバージョン管理指南 ~SourceTreeとBitbucketの導入編~

こんにちは!
ディレクターのネモトです!
[space ][space ]

みなさんバージョン管理システム ❐ってご存じですか?

[quote ]
バージョン管理システム(バージョンかんりシステム)とは、コンピュータ上で作成、編集されるファイルの変更履歴を管理するためのシステム。特にソフトウェア開発においてソースコードの管理に用いられることが多い。
[/quote]

簡単に言うと1つのファイル(ソースコード、原稿、企画書等)を複数人で編集する際の管理システムです。
有名なものだとGit ❐という名前を聞いたことがある方も多いかもしれません。
[space ]

少し前にGitのホスティングサービスGitHub ❐ で結婚式の2次会の管理をしたって記事がバズってましたね。
結婚式の二次会をGithubで管理するといろいろ便利って話 | -&- ❐
[space ]

もしかしたらこれから普通にマックとかで女子高生が
「今日出た課題リポジトリ作っとくから出来たとこまでプッシュしといてー」とかいう会話が
聞こえるようになるかもしれませんね(すいません、よくわかってません)。
[space ][space ]

今回少し大きなプロジェクトのためチームでバージョン管理システムを導入することになりました。
まったくソフトに疎い僕がやんややんや言われながらシステムを導入する様を
備忘録として、また同じような境遇の人がやんややんや言われないために書き留めようと思います。
ただ正直なところ、まだまったくわかっておりません。すみません。

1.SourceTreeをとりあえず入れる

兎にも角にもSourceTree ❐を入れろと言われました。
でも、旧世代の僕としてはよくわからないソフトをいれるのは抵抗がありますので
どういうソフトなのか聞いてみましよう。
[space ]

  • さんたまー、SourceTreeってなんのためにいれるの?
    ※森下は名前が“裕介”なのでユースケ・サンタマリアからとって“さんたま”と呼ばれています。
  • コマンドラインでgit操作するよりGUIのSourceTreeで操作するほうが簡単だからです。
  • ごちゃごちゃうるせーな。もっと簡単に、わかりやすく言え。
  • いちいちaddとかcommitをタイプするより、クリックで簡単にaddとか出来たほうがいいでしょう。
  • お、おん

[space ]

みなさん、おわかりになりましたでしょうか。
僕はまったくわかりませんでした。
なので、とりあえずインストールしてみましょう。
それから考えます。

インストール

01
インストールはここから ❐から。
たぶんスムーズにいけると思います。
※Gitをインストールしていない場合はポップアップが出ます。
「システム全体ではなく、SourceTree単独で使うためだけの内蔵用のGitをダウンロードする」を選択してください。
また、Mercurialもインストールしろと出ます。
これはよくわからなかったので「Mercurialを使いたくない」を選択しました。
たぶん大丈夫。
[space ][space ]

設定

02
インストール後の最初の画面。
「SourceTreeにGitとMercurialのグローバル設定ファイルの変更を許す」の意味がよくわかりません。
説明してもらいましょう。おーい、さんたまー。

  • PCの中にあるファイルで無視する設定ファイルがないからです。だって、.exeや.dllをコミットしたくないですよね?
  • お、おん

なるほど。なんとなくわかりました。なんとなく。
[space ][space ]

次の画面ではSSHクライアントの設定をします。
03
「PuTTY/Plinkを使う(推奨)」にデフォルトチェックが入っており“推奨”とありますのでここは従います。
“ぷってぃ”ってかわいいですね。
[space ][space ]

おっと、次へを押すと下記ポップアップが出ました。
04
ただ、ほんとに「No」でいいのか不安なのでさんたまに聞きます。

  • 大丈夫です。あとで設定出来ます。必要になったら、説明します。
  • お、おん

[space ][space ]

次の画面。え、なにこれ。こんなの設定してないんだけど。
05

どうやら先にホスティングサービスに登録しておかなければならなかったようです。

  • おいおいさんたまー、かんべんしてくれよー。ホスティングサービスってなんだよー
  • フォルダやファイルをネット上に置いておけるサービスです。dropboxなどのストレージサービスと違って、変更の履歴も残しておいてくれます。
  • はじめて言ってることがわかった! やったー!

2.Bitbucketに登録する

と、いうわけで御覧の皆様は先にホスティングサービスに登録してからSourceTreeをインストールしてくださいね。
[space ]

それではホスティングサービスの登録を行いましょう。
今回はBitbucket ❐を使用します。

登録

blog20140418nemoto06
まずはサインインします。
これは普通のサービスと同様なので特に詰まることはないかと思います。
登録が完了したら先ほどのSourceTreeのBitbucketの情報入力箇所にユーザー名とパスワードを入力してください。
これでSourceTreeとBitbucketを紐付かせることができました(たぶん)。
SourceTreeはローカルのクライアント、Bitbucketはストレージ的なイメージでしょうか(たぶん)。

リポジトリの作成

次はメニューの【リポジトリ】から【リポジトリの作成】を選びプロジェクトに応じて記録領域を作成します。
この領域にSourceTreeを用いてコードをプッシュしていくわけですね。
blog20140418nemoto07
設定は上記の通り。
[space ]

・・・ん?フォーク※1ってなんでしょう。
聞いてみましょう。

  • ねーねー、Bitbucketでリポジトリの作成するときに「フォーク」って項目がでてきたんだけど、これなに?
  • えーっと、それはですね・・・
  • フォークって食器のフォークのイメージで、ソースコードを料理に例えて「プライベートフォークのみ許可」っていうのはソースコード(料理)を許可された人のみ編集(食べることが)できるって意味です(阿部調べ)。
  • うわ!突然きた!

とのことなので、今回は「プライベートフォークのみ許可」(デフォルト)で問題ないようです。

SourceTreeでクローンを作成し、Bitbucketのリポジトリを紐付かせる

blog20140418nemoto08
作成したリポジトリに記載のあるURLを
SourceTreeの【新規/クローンを作成する】をクリックすると出てくるポップアップウインドウの
「元のパス/URL」に入力します。
blog20140418nemoto09
あとはローカルの保存ディレクトリを指定してレッツクローン!
これで最初の設定は完了です。
[space ][space ]

ぜーぜーぜー。ちょっと長くなったので運用にかんしては
次回(もしくは次々回・・・次々々回かも)お話させていただきます!

3.SourceTreeとBitbucketの初期設定に関するまとめ

かなりちんぷんかんぷんですがまとめます。

導入の目的

ひとつの案件(プロジェクト)のソースコードを複数人(チーム)で管理する際に
編集の重複等を防ぎ変更箇所を明確にし、制作作業をスムーズに行うため。

各ツールの役割

SourceTreeはローカルのクライアントでファイルの状態を管理しそれをリモートに伝えるツール。
Bitbucketはストレージ的役割で各人の情報を取りまとめて記憶する。

出てきた用語

このブログやツールの画面上に出てきた用語をまとめました。
[quote ]
リポジトリ:ファイルやディレクトリの状態を記録する場所です。
リモートリポジトリ:専用のサーバに配置して複数人で共有するためのリポジトリです。
ローカルリポジトリ:ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリです。
インデックス:リポジトリにコミットする準備をするための場所のことです。
プッシュ:リモートリポジトリに自分の変更履歴がアップロードされて、リモートリポジトリ内の変更履歴がローカルリポジトリの変更履歴と同じ状態になります。
ブランチ:履歴の流れを分岐して記録していくためのものです。
マージ:複数の履歴の流れを合流させることができます。
アド:ファイルやディレクトリをインデックスに登録すること。
コミット:ファイルやディレクトリの追加・変更を、リポジトリに記録すること。
プル:リモートリポジトリの履歴を取得することができます。
フェッチ:リモートリポジトリの最新の履歴の取得だけを行うことができます。
参考/引用:サルでもわかるGit入門 ~バージョン管理を使いこなそう~ | どこでもプロジェクト管理バックログ ❐
[/quote]

サルでもわかるGit入門はこの記事を書くにあたりとても参考になりました。
本当にありがとうございます。
[space ][space ]

やはりわからないとかなり時間がかかってしまいました。
これだけ工数をかけてやる価値はあるとは思いますが
単に導入するだけでは、余計に煩雑になってしまう可能性もあるのかなと感じました。
導入よりも運用レギュレーションの制定のほうが100倍重要だと思います。
実際まだ弊社でも本格的な運用が始まっていないので
ある程度運用方針等固まりましたら続編をお届けしたいと思います!