ファイル共有ソフトとしてのgit、これなら使える

Git(http://git-scm.com) は、急速に普及した分散バージョン管理システムだが、初めての人には難しい点があるのは確か。使い始めることを躊躇する人もいるだろう。まずは、「バージョン管理」とか言わずに、ファイル共有の目的で導入してはどうだろう。

git-logo small

ファイル共有にGitを使う

ある人、仮にAさんが管理している文書やプログラムがあったとしよう。そして、Aさん以外の人々、Bさん、Cさん、Dさんの三人も、Aさんが保持しているファイル群を閲覧・モニタリングしたいとしよう。ファイルをメールに添付して同報送信するという方法があるが、変更のたびに毎度メールで送るのは良い方法とは言えない。

ドロップボックス(http://www.dropbox.com/)Googleドライブ(http://drive.google.com)など、クラウドストレージサービスを使うのがひとつの解決手段だ。ファイルを、Aさん、Bさん、Cさん、Dさんで共有することによって、いつでも好きなときに最新のファイルにアクセスできる。

dropbox googledrive log

さて、実はAさんはファイル群をGitによってバージョン管理していたとする。GitをドロップボックスやGoogleドライブと連携させる方法はあるが、Bさん、Cさん、DさんにもGitを使ってもらえば、Gitだけでファイル共有が完結する。Bさん、Cさん、Dさんはファイルを変更せずに単に見るだけならば、使用するGitコマンドは2つしかない。

  1. 最初に1回だけ git clone。
  2. ファイル群を更新(同期)したいときに git pull。

更新は手動なので「勝手に同期してくれたらいいのに」という不満は残るかもしれないが、GUIなGitツールであるSourceTreeを使えば、同期はボタンを押すだけである。Gitに慣れるために、まずはファイル共有ソフトとして使ってみるのは悪くない。バージョン管理の難しい操作は何も必要ない。そのうちに「見るだけじゃなくて、ファイルを追加・変更して共有したい」と思ったら、幾つかのGitコマンド(あるいはGUI操作)を覚えればよいだろう。触ってみるば、その機能に興味を持つキッカケも生まれる。

共有リポジトリの確保

今説明した使い方では、Aさん、Bさん、Cさん、Dさんの4人が、それぞれのコンピュータにリポジトリを持つ。リポジトリとはファイルの保管庫のことだ。リポジトリの実体はローカルディスク内のフォルダだと思ってよい。

各人のローカルディスクにある4つのリポジトリ以外に、ネットワーク上の共有リポジトリが必要になる。それらの5つのリポジトリの関係は次のようになる。Aさんだけが共有リポジトリに書き込み(push)をするが、他の人々は共有リポジトリからローカルリポジトリに同期のためにダウンロード(pull)するだけだ。

git-system

ここで、共有リポジトリをどうするか? が問題になる。一番ポピュラーな方法はGitHub(https://github.com/)を利用することだろう。

github-octocat

だが、GitHubの無料プランだと非公開リポジトリは作れない。bitbucket(https://bitbucket.org/)なら無料プランでも非公開リポジトリを作れる。共有するユーザー数が5人までなら無料でbitbucketを利用できる。

GitBucket(https://github.com/takezoe/gitbucket)GitLab(http://gitlab.org/)のような、GitHubと類似のサービスを実現できるオープンソースソフトウェアもある。外部サービスではなくて、自社内でサーバーを準備するなら、このようなソフトウェアをインストールして動かすのもいいだろう。

Gitのインストールと2つのコマンド

Aさん以外の、Bさん、Cさん、DさんはGitを使ったことがないとしよう。まずはインストールする必要がある。MacやLinuxでは、標準的なパッケージマネージャやインストーラーでGitのインストールが可能だ。Windowsでも、Git for WindowsはWindowsインストーラーからインストールできる。Git for Windowsは、以前の記事「今すぐVagrantを始めよう」で既にインストール方法を説明している。

共有リポジトリのURLが、https://github.com/<AさんのユーザーID>/<リポジトリ名>.git ならば、Bさん、Cさん、Dさんは最初に次のコマンドを実行する。

$ git clone https://github.com/<AさんのユーザーID>/<リポジトリ名>.git

これで、それぞれのコンピュータにローカルリポジトリが作れる。ローカルリポジトリのフォルダは、このコマンドを実行したフォルダ内の<リポジトリ名>という名前のサブフォルダーになる。(ローカルリポジトリのフォルダは、作業ツリーと呼ぶのが正確だけど。)

上記のURLは、GitHubの形式だが、bitbucketや独自にサーバーを立てた場合も同様だ。以下は、私が共有リポジトリとしてbitbucketを使ってテストしたときの画面だ。

hiyama@HIYAMA ~/tmp
$ git clone https://bitbucket.org/m_hiyama/git-test.git
Cloning into 'git-test'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
Checking connectivity... done

hiyama@HIYAMA ~/tmp
$

共有リポジトリとローカルリポジトリを同期させるには次のようにする。

$ cd <リポジトリのフォルダ>

$ git pull

以下は実例。

hiyama@HIYAMA ~/tmp
$ cd git-test/

hiyama@HIYAMA ~/tmp/git-test
$ git pull
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://bitbucket.org/m_hiyama/git-test
   daa3a84..89ef274  master     -> origin/master
Updating daa3a84..89ef274
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

hiyama@HIYAMA ~/tmp/git-test
$

GUIで操作するには

覚えるコマンドは git clone と git pull の2つだけ、git clone は最初の1回だけ。それでもコマンドを打つのは嫌だ、という人はGitのGUIツールであるSourceTree(http://www.sourcetreeapp.com/)をおススメする。

SourceTreeのインストール方法は、私の個人ブログ記事「WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows」の「SourceTree for Windowsのインストール」の節に書いてある。Macでのインストールはより簡単なはずだ。

SourceTreeを起動してみると、ウィンドウの左下に次のようなアイコン群がある。一番左のアイコン(リポジトリの追加)が git clone に相当する。このアイコンをクリックするとダイアログが現れる。

sourcetree-add-icon

sourcetree-add-dialog

共有リポジトリのURLとローカルに作るフォルダのパスを入力して(他はデフォルトのままでよい)「クローン」ボタンを押すと、共有リポジトリがローカルにコピーされる。そう、git clone を実行したのとまったく同じ効果がある。

共有リポジトリとローカルリポジトリを同期させるには、SourceTreeウィンドウの上部にあるツールボタン群から「プル」を探してクリックする。それで git pull を実行したことになる。

sourcetree-pull

触ることから始めよう

ソフトウェアは、その全機能を使わなくたっていいのだ。特に機能豊富なソフトウェアに関しては、その機能性や難解そうな概念に恐れをなして触りもしないことになりがちだ。ひとつの機能だけでもよいから、とりあえず使ってみることから始めてみてはいかがだろう。