#はじめに
プロ研216はGitHubを使っています。しかし、Git, GitHubとはそもそも何なのかを知らない人もいると思うので、資料にまとめます。
#Git, GitHubとは?
###Git
Gitとはプログラムのソースコードなどの変更内容を記録・追跡するための分散型バージョン管理システムです。
Gitでは各ユーザーのワーキングディレクトリに、全履歴を含んだリポジトリ(作業場)の完全な複製が作られるので、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができます。
例えば、プログラミングをしていると日々ファイルの中身は変わっていきます。この変遷の履歴を管理し、必要に応じて前のものに戻したり、途中で枝分かれして別の変更を加えたりするためのシステムです。
かんたんに言うと、オフラインでもプログラムの編集などができ、その変更履歴も管理できるシステムです。
###GitHub
GitHubとは、このGitの仕組みを利用して、世界中の人たちがプログラムコードやデザインデータなどを保存できるウェブサービスです。
GitHubは様々なプロジェクトのためにGitのリポジトリをホスティングできるサービスです。Gitは基本的にコマンドラインツールですが、
GitHubはWeb上で扱うことができます。
#なぜGitHubを使うのか?
GitHubにはたくさんの便利な機能があります。プロジェクトのバグ管理に使えるIssuesや、コードレビューを効率化できるPull Requestなどのチーム開発に役立つ機能がWeb上から使えるようになります。
その他にも、チーム開発で一番大変なコード統合をGitの機能を使うことによって自動的にしてくれるので、開発効率が上がります。
コードレビューでは、指摘と対象のコードがひと目で分かるようになり、バグ修正や機能追加がどの時点のバージョンで実装されたのかも一目瞭然になります。
要するにチーム開発やコード管理などにおいて便利なので入れたほうがいいよ、ということです。
#P.S.
Git, GitHubは使えば使うほどわかっていくと思うので、今はよくわからなくても全然大丈夫です。
たくさんコードを書いて使っていきましょう。
#予備知識
これから記事を読み進める時に必要な情報を書いておきます。
分からないときはここを見ましょう。
###SSH
SSH(secure shell)とはネットワークを経由してマシンを遠隔操作する仕組みのことで、通信が暗号化されているのが特徴的です。
主にクライアント(ローカル)からサーバー(リモート)に接続する時に使われます。
仕組みを見ていく上で重要になるのが秘密鍵と公開鍵です。
まずはクライアントのマシンで秘密鍵と公開鍵を作り公開鍵をサーバーに渡します。サーバー側はその公開鍵を使ってユーザーを特定し紐付けを行っていきます。
ちなみに、秘密鍵は自分で管理して必ず見せてはいけません。
SSH接続を行うことによって安全にサーバーへ接続し、操作することができます。
###ブランチ
ブランチとは、1つのプロジェクトから分岐させることにより、プロジェクト本体に影響を与えずに開発を行える機能のことを言います。
イメージとしてはパラレルワールドを作成して、のちに元の世界に収束させることもできる、という感じです。
リポジトリを作るとmasterというブランチが作成されます。
個人開発でも使うことはありますが、チーム開発ではほぼ確実に使うと思うので知っておきましょう。
###リポジトリ
リポジトリ(repository)は保管場所のようなもので、中身はドキュメントファイルだったり、設定ファイルだったり、プログラムそのものだったり、いろいろです。
リポジトリは以下の2種類があります。
####リモートリポジトリ
リモートリポジトリはパブリックな場所でみんなで共有するものです。
これ自体は樹木に例えられることが多く(実際にツリー構造をしている)、masterと呼ばれる幹に安定したコードを置いておき、そこからブランチを生やしていきます。
####ローカルリポジトリ
ローカルリポジトリはプライベートな場所で、ユーザ一人ひとりが利用するために自分の手元のマシン上に管理するリポジトリのことです。
ローカルリポジトリで編集した内容をリモートリポジトリにアップロードすることができます。