ここ最近といいますか、もはやプログラム開発者だけでなく、インフラエンジニア、もしかしたらデザイナーもGitを使えなければ…と、なっているかもしれません。
Gitはいわゆるファイルのバージョン管理システムの1つです。バージョン管理とは、とあるファイルを一人もしくは複数人で変更する場合、その履歴(バージョン)を保存してくれて「1つ前に戻したい」とかできるモノです。
1つのファイルを「計算書_20130714-01.xlsx」「計算書_20130714-02.xlsx」「計算書_20130712-01.xlsx」とかファイル名を変更して管理とかやらなくて良くなります。 Gitはバージョン管理システムの中でも分散型といわれる、ネットのどこかにリポジトリ(リモートリポジトリ)があり、ローカルにもリポジトリがある方式です。
ネットが繋がらない状況でもローカルのリポジトリにファイルの変更を反映して、ネットが繋がったところでネットのどこかにあるリポジトリに同期できます。
詳しい仕組みなどはともかく、Git使えないとね…という状況ですので、ひとまず使えるようになってみます。 想定
Gitはいわゆるファイルのバージョン管理システムの1つです。バージョン管理とは、とあるファイルを一人もしくは複数人で変更する場合、その履歴(バージョン)を保存してくれて「1つ前に戻したい」とかできるモノです。
1つのファイルを「計算書_20130714-01.xlsx」「計算書_20130714-02.xlsx」「計算書_20130712-01.xlsx」とかファイル名を変更して管理とかやらなくて良くなります。 Gitはバージョン管理システムの中でも分散型といわれる、ネットのどこかにリポジトリ(リモートリポジトリ)があり、ローカルにもリポジトリがある方式です。
ネットが繋がらない状況でもローカルのリポジトリにファイルの変更を反映して、ネットが繋がったところでネットのどこかにあるリポジトリに同期できます。
詳しい仕組みなどはともかく、Git使えないとね…という状況ですので、ひとまず使えるようになってみます。 想定
- Gitサーバを立てても良いのですが、手っ取り早くgithubを利用します
- とあるプロジェクトに参加すると想定して、すでにリモートリポジトリは用意されています
- Gitを使ったファイルの変更管理をひとまずできるところまでやってみます
SourceTreeの導入
SourceTreeの画面はこんな感じです。
Mac版
Windows版
http://www.sourcetreeapp.com/ からSourceTreeをダウンロードして導入します。
以下、Windows版で進めます。
Mac版でも画面構成が異なる部分がありますが、内容的には同様です。
- Windows環境でOpenSSHが導入されていなければPuTTYを使いますので、予め導入してください。MacではOpenSSHが導入されていますので少しラクです。
- githubのアクセスにはssh秘密鍵が必要です。PuTTYを利用してSourceTreeを使う場合は、ssh秘密鍵をppk形式に変換しておいてください。MacではOpenSSHの秘密鍵がそのまま使えます。
- githubのアカウントを未取得でしたら、 github.com にアクセスしてアカウントを作っておきます。
Mercurial一式も未導入なら導入するか?と訊かれます。
メルアドなどを訊かれるので入力します。
ローカルのリポジトリを置く場所を作っておきます。ここでファイルの更新を行うことになります。
リモートリポジトリと同期してファイルを更新して反映してみる
SourceTreeが起動したら、早速リモートリポジトリと同期します。「Clone」ボタンをクリックします。リモートリポジトリの場所とローカルリポジトリの場所を指定します。
「Pull」ボタンをクリックしてリモートリポジトリの内容をすべてローカルにコピーします。
作業前には必ずこれをやっておきます。
ローカルにコピーされました。
既存のファイルの更新や新しくファイルを追加したり作業します。
作業が一段落して、リモートリポジトリに反映しておこうと思ったら「Commit」ボタンをクリックします。
更新・変更したファイルが表示されます。
コミットするときは、コメントを必ず書いておきましょう。
コミットしただけでは、リモートリポジトリには反映されません。「Push」ボタンをクリックして反映します。
リモートリポジトリのどのブランチに反映するか選びます。
github.com で反映されたか確認してみます。
「ブランチ切って作業して」と言われたら
何でもmasterと言われる大元にファイルを更新すると、ファイルがすべて揃わないとリリースできなかったりします。大きな追加や変更が発生する作業が複数あって、次回のリリースにはまだ反映しなくていい、でもリポジトリには入れておきたい…という時はブランチを作成します。
よく「ブランチを切って」と言われます。
まず、作業をしますので、上記のように「Pull」ボタンをクリックして同期します。 新しくブランチを作るには「Checkout」ボタンをクリックします。
「Checkout New Branch」タブをクリックします。
「Checkout remote branch」は、大元からブランチを作るならmasterを選びます。
「New local branch name」に、作成するブランチの名前を入力します。
上記と同様にファイルの追加や更新を行なって、コミットします。
ブランチをリモートリポジトリにも反映する場合は、作成したブランチを選択します。
github.com で反映されたか確認してみます。
ブランチをマージする
ブランチをいくつも分けていくと管理が大変になります。リリースのタイミングなどでまとめましょう。 masterブランチをチェックアウトします。「Merge」ボタンをクリックして、マージしたいブランチを選択します。
マージされます。「Push」ボタンをクリックしてリモートリポジトリにも反映します。
「ブランチ切ってあるから、このブランチで作業して」と言われたら
上記の「自分でブランチ作って」と言われることもありますが、管理者などが作業するためのブランチを作ってくれるときもあります。「Fetch」ボタンをクリックして変更がないか確認します。変更があれば「Pull」ボタンをクリックして同期します。上記と同様に始めから「Pull」ボタンをクリックして同期してみても良いです。
「Checkout」ボタンをクリックします。
「Checkout New Branch」タブをクリックします。
「Checkout remote branch」は、切ってもらったブランチを選びます。
「New local branch name」には、選んだリモートリポジトリのブランチの名前が反映されます。
今どこのブランチで作業しているかは画面左側の表示で分かります。
ファイル更新・追加後のコミット、プッシュ、マージは上記と同様です。
終わりに
「Git使って」と言われたときは、ひとまずこれで何とかなるかと思います。
Gitはまだまだいろんなことができます。
ファイルの更新がかぶった場合はどうする?などは、別の人が書いてくれるかもしれません。
Gitやバージョン管理ってそれほど難しくないと思っていただければ幸いです。
一人でもバージョン管理は有効な手段です。
この世から1つでも多く「計算書_20130714-01.xlsx」みたいなファイルが駆逐されることを祈りつつ、今回はここまでです。