ヤクとアヒル

日常の問題を解決したときにつけるログ

さわってみようGit

f:id:motoso:20130914183849j:plain:h400

情報系なのにGit使ってないの?

という天啓を受けたので1週間前ぐらいからGitに手を出してみました*1.そしたら意外に簡単に使えました.読んだドキュメントをメモしておきます.作成者各位に感謝.

Gitを使ってやりたかったこと

研究上いろいろなテストコードを書くのですが,どれがうまく行っているのかわけわからなくなりがちです.それを防ぐために手動でバックアップとったりするのですが,ぶっちゃけめんどうです.こんな作業こそ自動化したい.そう思いました.

  • 異なるPCでのソースコード共有:研究室で書いたコードの続きを自宅で書きたい

研究室のPCで作成したプログラムの履歴をサーバのリポジトリ(データベースみたいなもん)に保存しておき,自宅PCからアクセスして休日でも開発.開発したらまたサーバにあげて休み明けの研究室でも開発続行.みたいなのがやりたかった.つまり以下の図です.

[研究室PC]←(履歴のやりとり)→[サーバ(共有リポジトリ)]←(履歴のやりとり)→[自宅PC]
(これはGitじゃなくてもできます)

本記事の対象

  • 基本的に自分一人でコードを書く人
    • 例えば一人で開発してる大学院生
  • バージョン管理に困っている人
    • 例えば,明日セミナーなのにさっきの追加したコードのせいでプログラムが動かなくなっちゃった大学院生
  • Linux使い(コマンドがイヤじゃない人,またはイヤでも使うしかない人)

Gitってなんなのです?

Gitは最近メジャーなバージョン管理システムです.バージョン管理システムで何が出来るか非常に乱暴に言ってしまえば,「自分の作成しているプログラムの履歴を管理する」ことができます.つまり,
「このプログラム昨日まで動いてたのに,さっき付け加えたのがまずくてバグッてる,元に戻したい!」
という状況を簡単に脱出することができるのです.あ,いまこう思いましたか
「バックアップするだけなら全体を圧縮して適当に管理しておけばいい」
たしかにそうなのですが,上記に限らず様々な機能が実装されています*2.手動で圧縮し忘れると,もし実装方針が間違えていた場合,どこまで巻き戻せばよいかわかりません.個人開発の場合でもGitを使うメリットは十分にあると思います.
実はグループで一つのシステムを開発している際にはもっとメリットがあるのですが,そんな人はこのエントリを読むより隣の人に聞いたほうが早いので,本記事では対象としません.

Gitを使ってみるのです!:私が読んだドキュメント

わたしがGitを始めるにあたって私が読んだドキュメントを順にあげていきます.これらを読んだらなんとなくGitが使えるようになりました.ちなみに,私の利用しているOSはUbuntu12.04です.

まずはチュートリアルです!

まずチュートリアルをドットインストールで行います.動画が載っていて大変わかりやすいです.

ここまでやればコマンドの基礎的な部分は理解できます.しかし内部でどのように動いているのかわかりづらいです.とくにブランチまわりはイメージができないとつらい.そこで次のドキュメントを読んで,内部の動きをイメージしながら復習しました.発展編のみでOK*3

次に運用方法です!

以上でコマンドはわかりましたが,運用方法が自由すぎてどうつかえばいいのかわかりません.はじめてなので,ある程度決まっていたほうが運用しやすい.そこで次のドキュメントを読んでさらに整理します.

ここまでで,実際の運用において素人が陥りがちなミスを理解しました.でもちゃんとしたモデルを提示されたわけではないので,ブランチをどう設計すればいいのかわかりません.そこで他の人の運用方法も見てみましょう.良い運用例として引き合いにだされる「A successful Git branching model」について勉強してみましょう.

ここまでで,実際の運用もなんとなくわかりました.あとは自分の環境で運用してみましょう!

補足:運用を助けるプラグイン

「A successful Git branching model」に沿った開発をする上で有用なプラグインがあります.それがGit-flowです.次のチュートリアルを見ながら利便性を見てみましょう.

このチュートリアルでやっていることを視覚的にまとめると下のドキュメントになります.

ちなみに,私はコマンドを手打ちで使えるようになるまでGit-flowはつかわない方針です☆(ゝω・)vキャピ

入門Git

入門Git

*1:Git使ってない人は情報系でもたくさんいます.念のため.

*2:例えば,「前のバージョンとの変更点は何なのか」がすぐわかるようになります

*3:入門編はGUI使ってるしね.今回は使わないので.

スポンサーリンク