Githubって何?

こんにちは、ParaLuxでインターンをさせていただいている佐藤です。
今回は、
1、Githubとは何か
2、Githubの使い方
について書いていきたいと思います。ゆっくり読んでいただけると幸いです。
1、Githubとは
GitHubは、Gitの仕組みを利用したウェブサービスのことです。世界中の人々が自分のプログラムを公開したり、公開されたプログラムを保存したりすることができます。
Gitは基本的にコマンドラインツールで扱いますが、GithubはWeb上でグラフィカルに扱う(マウスで動かす)ことができます。
リポジトリをチーム内で共有して、作業目的ごとにブランチ (Branch) と呼ばれるコピーを作ります。ブランチ適当なタイミングでブランチに対して行われた更新をオリジナル (Master Branch) に反映するというのが、GitHub を使った共同開発の 1 つのパターンとされています。
この方式では、参加者が同じリポジトリ内で更新を行うため、事前に調整が必要になることもあり、比較的管理が容易な小規模でプライベートなプロジェクトに向いていると言われています。
Githubにはフォーク、プルリクエスト、マージという3つの機能があります。
フォーク
自分のアカウント内に誰かの既存のリポジトリの複製をつくることができます。この操作をフォークといいます。オリジナルのものに対する編集アクセス権がなくても、自分のところで改変することができるようになります。

プルリクエスト
自分が行った変更をオリジナルのブランチに反映したい時に使います。オリジナルのオーナーに「プルリクエスト」と呼ばれる通知を送ることができます。作成されたプルリクエストは一覧で見ることができるので、オリジナルのオーナーは簡単にプルリクエストを確認できます。
プルリクエスト作成者とレビュー・マージ担当者はプルリクエスト上でコメントをやり取りして議論することができます。議論を通すことで最終的にマージされるソースコードの品質を上げることができます。また、これらのやりとりはサーバ上に記録されているため、問題が起こった時に過去のやりとりを見て再度議論できます。

マージ
プルリクエストを受け取ったオーナーは、ボタンをクリックするだけで、その人のリポジトリに対して行われた変更を自分のリポジトリにも取り入れることができます。

Githubの使い方
Githubのアカウント作成
Githubのトップページにアクセスします。右上の「Sign up」をクリックし、アカウントを作成します。

リモートリポジトリの作成
作成したアカウントにサインインし、リポジトリを作成します。
リポジトリを作成するには下の画像で矢印に刺されている「+」をクリックして、表示される項目の「New repository」をクリックします。

「+」をクリックすると次のようなページが表示されます。
まず、「Repository name」でリポジトリの名前を決めます。ここでは「practice」という名前にしました。その下にある「Description」は必要に応じてそのリポジトリの説明を入力します。
次にリポジトリの種類を選択します。リポジトリの種類は「Public」と「Private」があります。「Private」は有料会員のみ作成することができます。
最後に、「Create repository」をクリックすることでリモートリポジトリを作成することができます。

リモートリポジトリにプッシュする
Gitの準備
まずはGit で管理するディレクトリを作成し、そのディレクトリに移動します。ここでは「practice」というディレクトリを作成しています。Gitで管理できるように”git init”を実行します。
すでにGitで管理するためのディレクトリを作成している場合は、そのディレクトリに移動してGitで管理できるように”git init”を実行します。
$ mkdir practice
$ cd practice
$ git init
プッシュ先の指定
次に、プッシュ先のリモートリポジトリを指定します。Githubからhttpsで始まるURLをコピーします。

コピーしたURLを”git remote add origin”の後にペーストして実行します。
$ git remote add origin コピーしたURL
リモートリポジトリにプッシュする
ディレクトリ内のファイルをリモートリポジトリにプッシュします。今回ディレクトリには以下のようなファイルを準備しています。

index.htmlファイルをプッシュします。以下をそれぞれ実行します。
$ git add index.html
$ git commit -m "Create index.html"
$ git push origin master
これでリモートリポジトリにプッシュすることができました。
プッシュされたファイルはGithubで確認することができます。

プルリクエスト
ブランチの作成
現在、作業しているブランチはmasterブランチです。新たにブランチを作成し、そのブランチに移動します。ここではdevelop/satoというブランチを作成します。
$ git branch develop/sato
作成したブランチに移動します。
$ git checkout develop/sato
作成したブランチにプッシュ
作成したブランチにプッシュしていきます。ここではmain.cssファイルをプッシュしています。
$ git add main.css
$ git commit -m "Create main.css"
$ git push origin develop/sato
プルリクエスト
作成したブランチをmasterブランチにプルリクエストします。プルリクエストはGithub上で行います。
下の画像の①が指している「Pull requests」をクリックし、②で指している「New pull request」をクリックします。

「New pull request」をクリックすると下の画像のように表示されます。

①で指されている「base」はマージ先ブランチ、「compare」はプルリクエスト対象ブランチです。
作成したブランチをmasterブランチにマージさせるためにプルリクエストをするので、マージ先ブランチにはmasterブランチを選択し、プルリクエスト対象ブランチには作成したブランチを選択します。
②で指されている部分にはブランチで新たに作成したファイルや、変更箇所が表示されます。
確認できたら、③の「Create pull request」をクリックします。
次にリポジトリの説明を書きます。「Write」ではリポジトリの説明を書き、「Preview」では「Write」で書いた説明の描画を表示します。

上記の描画を表示。

説明を書き終えたら「Create pull request」をクリックします。これでプルリクエストが完了です。
プルリクエストをマージする
「Pull requests」をクリックして開きます。
マージしたいプルリクエストを選択します。

「Merge pull request」をクリックします。

マージしても問題がないなら「Confirm merge」をクリックします。

これでマージが完了です。
最後に
拙い文章ではありましたが、読んでいただきありがとうございました。次回もよろしくお願いします。