今日からはじめるGitHub ~ 初心者がGitをインストールして、プルリクできるようになるまでを解説

エンジニアであれば、チーム開発ではもちろんのこと、個人開発でもGitを用いてバージョン管理していきたいもの。今回は、GitやGitHubをはじめて使う人に向けて、導入から初歩的な使い方までを解説します。

今日からはじめるGitHub ~ 初心者がGitをインストールして、プルリクできるようになるまでを解説

ソースコードの管理はできていますか? ファイルを修正するときに、修正前のソースコードをhoge.php.bakのようなバックアップファイルとして残し、開発環境をゴミだらけにしていませんか?

エンジニアであれば、チーム開発ではもちろんのこと、個人開発でもGitを用いてバージョン管理していきたいもの。今回は、GitやGitHubをはじめて使う人に向けて、導入から初歩的な使い方までを解説します。

ここではGitの詳細な仕組みには触れません。GitやGitHubを利用したことのない人が、Gitを用いた開発の流れをざっくりと理解し、とりあえず試すことができるようになることを目的としています。

GitとGitHubの基礎知識

GitGitHubという言葉を聞いたことはあるでしょう。GitとGitHubは、それぞれ指し示すものが違います。まずは、GitとGitHubがそれぞれ何なのかを簡単に説明しましょう。

Gitは、分散型バージョン管理システムの名称です。このあと解説しますが、GitはローカルのPCで編集作業を行い、ファイルの修正履歴も管理できます。

1Gitgit-scm.com

ソフトウェアのバージョン管理システムとして、以前はCVSやSubversionがよく使われていましたが、いまではGitが採用される場合が多いでしょう。

一方、GitHubは、Gitを用いたソフトウェア開発プロジェクトのための共有ウェブサービスの名称です。

2How people build software · GitHubgithub.com

Gitでソースコードを管理するだけでなく、GitHub上でレビューをしたり、他のメンバーとコラボレーションしたりすることで、 Gitの真の力が発揮されるでしょう。

Gitはシステム、GitHubはGitを用いたサービス。混同しないようにしましょう。

Gitではローカルで開発を進めることができる

Gitの特徴を簡単にまとめると、次のようになります。

  • ローカルで作業ができる
  • 同じ情報を持ったリポジトリ(バージョン管理対象のファイル群)を、開発者ごとに持つことができる

CVSやSubversionでは、いつでも全員が共有するリポジトリに対し修正内容を反映(コミット)します(集中型)。そのため、気をつけないとコミットの際に開発中の不完全なソースコード、実験的なソースコードが共有されてしまう危険性があります。

3
集中型のバージョン管理システムの危険性

一方、 分散型のGitであれば、ローカルのPC上でコミットができます。手元でコミットを続けたのち、任意のタイミングでプッシュできます。そのため、開発途中のソースコードがいきなり共有しているメンバー全員に影響を与える心配がありません。

4
分散型のGitではローカルで開発してマージできる

例えるならば、CVSやSubversionのときは公開済みのブログを推敲しなければならなかったものが、Gitになれば非公開の下書き状態で推敲できるようになった、というイメージです。

Gitの基礎用語

Gitを扱う上で、押さえておきたい用語をまとめます。

用語 内容
リポジトリ(repository) データを保存する場所。Gitでは、このリポジトリ単位でデータを管理する。修正履歴も保存されている。
リモートリポジトリ(remote repository) サーバにあるリポジトリ。サーバに保存され、共有される。
ローカルリポジトリ(local repository) ローカルに保存されているリポジトリ。
クローン(clone) リモートリポジトリを複製作成すること。修正履歴なども複製される。
ブランチ(branch) 一連の修正を、主流から枝のように分岐させて管理するもの。ブランチでの修正内容は他のブランチの影響を受けないため、同じリポジトリで同時に複数の開発を行うことができる。
チェックアウト(checkout) 他のブランチへ移動し、作業ディレクトリを任意のコミット状態にすること。
コミット(commit) 修正内容をローカルリポジトリに反映すること。
プッシュ(push) ローカルリポジトリの修正内容をリモートリポジトリに反映すること。
プル(pull) リモートリポジトリの修正内容をローカルリポジトリに反映すること。
マージ(merge) 異なるブランチの修正内容を反映すること。マージ先とマージ元の両方に変更履歴が残る。
コンフリクト(conflict) マージの際に、リモートとローカルで同じファイルの同じ箇所に対して修正がされており、自動でマージできないこと。両方の修正を合わせた内容に手動で編集する必要がある。

GitHubでは公開ソフトウェアに修正提案できる

GitHubの最大の特徴は、ソースコードを通じて他の開発者とコミュニケーションがとれることです。GitHub上には、数多くのソースコードが公開されています。それらに修正依頼することはもちろん、自らが修正したソースの提案も可能です。

OSSとして公開されているソースコードで気になる点がある場合、これまでの流れを確認しつつソースコードを修正し、プルリクエスト(pull request)を出すことにより、OSSに自分の修正が取り込まれることもあります。そのため、GitHubにより、OSSにも参加しやすくなりました。

OSSとは

OSSとはオープンソースソフトウェア(Open-Source Software)の略称。例えば、Linuxや、MySQL、統合開発環境のEclipse、スクリプト言語のPHPやPythonも、OSSです。GitHub上で公開されているOSSも多く、TensorFlow、AngularJS、Swiftなどの開発にも参加できます。

他の開発者のソースコードを見るだけでなく、自分の成果物も公開できます。レビューの内容も含めて公開し、フィードバックを受けることに価値があるといえるでしょう。エンジニア採用では、GitHubのアカウントを伝え、自分のソースコードを見てもらうこともあります。

コミュニケーション以外にも、バグや改善要望をイシュー(issue)として管理する、開発者ごとの活動状況を表示する(「芝を生やす」ということもあります)など、開発時に便利な機能がそろっています。

Gitの真の力を発揮するために、GitHubは欠かせない存在です。

芝を生やす楽しみ

「芝」とはGitHubプロフィールで表示されるContributionグラフのこと。コミットすると、その日のマス色が緑に変化します。

一部のエンジニアにとって、GitHub上で7マス×53マスの芝を大切に生やすことは大きなモチベーションになっています。芝に着目したサービスも存在するほどです。

5

このShibartでは、自身のグラフ(芝)がプリントされたTシャツやマグカップ、トートバッグなどを作成・購入できます。

Shibart | GitHub で育てた芝を、あなただけのTシャツに。shibart.pocke.me

GitHubの基礎用語

GitHubの基本用語も押さえておきましょう。

用語 内容
プルリクエスト
(pull request)
GitHubに備わっているコードレビュー機能。修正を元のリポジトリやブランチに取り込む際に、この機能を用いて他の開発者に修正の内容を確認してもらう。バグの混入を防いだり、より良いソースコードに修正したりできる。
フォーク(fork) 他の開発者のリポジトリをGitHub上で複製し、自分で編集できるようにする機能。この機能で複製することにより、複製元のリポジトリも表示されるため、そのコードがオリジナルなのか、派生版なのかが明らかにできる。
イシュー(issue) GitHubに備わっている課題管理機能。プロジェクトやソースコードの課題を管理することができ、ソースコードやプルリクエスト、修正履歴といったGitHub上の情報と、課題を関連付けて管理することができる。
オーガナイゼーション(organization) 組織や団体、プロジェクトなどのグループのこと。オーガナイゼーションの配下にリポジトリを作成して管理することができる。
Gist GitHubが提供している、短いコードやメモの共有サービス。バージョン管理はもちろん、他の開発者が書いたものをフォークしたり、GitHub以外のブログにエンベッドもできる。gist.github.com
Pages GitHubが提供するホスティングサービス。GitHubのアカウントがあれば、無料でウェブページを公開することができる。手順も簡単で、専用に作成したリポジトリによってウェブページを修正することもできる。pages.github.com

環境の構築(1) ローカル環境でGitを使えるようにする

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く