GitとGitHubの違い

いよいよGitを使う機会が増えてきた。Gitについては何度か勉強したことがあったが、実際に使う機会はあまりなかった。

Gitを実際に使いはじめて、そもそもGitとGitHubを混同していたことに気づいた。

Gitとは

Git(ギット)は、ファイルの変更履歴を管理するバージョン管理システム

LinuxMacには標準で入っているのですぐに使える。Windows用やGUIバージョンも用意されているが、開発では通常CUI(コマンド)を使う。

バージョン管理って、事務仕事でもやった方がいいんじゃないだろうか…。

予算資料とか毎日毎日別バージョンやぼつファイルの山ができて大変なことになっていた。そして翌年、次の担当者が見ようとしたときにどれが正しいファイルかわからない、なんて日常茶飯事。共有ハードディスク上の一つのファイルを各担当者が編集することも多かったが、誰かが作業していると開けないので、終わるまで待たされることもしょっちゅう。バージョン管理システムを事務仕事にも導入できたらかなり効率化できそう。

話がそれたが、Gitは、元々Linux生みの親であるリーナス・トーバルズ氏が、Linuxソースコード管理のために作ったオープンソースバージョン管理システム。一つのファイルを同時にたくさんの人が編集することを可能にするシステムだ。

実際には、大本のファイル群Aがあって、各自がAのコピーを編集し、編集が終わったらAに取り込んでもらえるようリクエストするという流れで使うことが多い。

一人で使ってみる

Gitは、自分一人で作業が完結する場合にも使うことができる。ディレクトリを作って変更をGitで管理するように設定して適切に操作すれば、ディレクトリ全体を少し前の状態に戻したり、大本は変更しないまま別の変更を試したりすることができる。

Gitについて検索すると、使い方を間違えると大変なことになる(チームに迷惑をかける)という情報がたくさん出てくるので、怖いものだというイメージがあるかもしれない。

自分一人でやる場合は誰にも迷惑はかからないので、いくらでも練習することができる。

GitHubとは

github.co.jp

GitHub(ギットハブ)は、ソフトウェア開発のプラットフォームで、Gitと連携させてソースコードを管理することができるWebサービスGitHub自体はRuby on Railsなどで書かれている。

コードを誰かと共有したいときやチームで開発するときに、共有のディレクトリを作ったりすると思う。この共有するディレクトリのことを、Gitではリモートリポジトリという。

リモートリポジトリは共有ハードディスクだったり、Web上だったりするのだが、Webに保存したい場合に使えるサービスの一つがGitHubだ。名前にGitが入っているので紛らわしいが、もしかしたらHubやHogeという名前のサービスだったかもしれない。

Gitと連携させてソースコードを管理できるサービスは、GitHub以外にもいろいろある。

bitbucket.org

backlog.com

どちらを操作しているのか意識する

実際には、多くの企業やOSSGitHubが利用されておりGitHubを使う人が多いだろう。Gitと検索すると、GitHubについてのページもたくさん出てくる。

どちらもコマンドラインで操作できるので、addして、commitして、pushのように、ローカルリポジトリとリモートリポジトリへの操作が一連の流れとして書かれていたりするが、今自分はどっちの操作をしているのかを把握することが大事だと思う。

というのも、自分がGitは怖いと思っていた原因が、ローカルとリモート、GitとGitHubの関係を理解できていなかったことだった。自分のマシン内のミスだけなら簡単に取り消せる。どういう操作をやったときにWeb上のリモートリポジトリにどんな影響が及ぶのかを知る必要がある。