githubを使ったgitの使い方

最近gitlabをずっと使用していました。なぜなら、gitlabはprivateのリポジトリを無料で作成できたからです。しかし、久しぶりにgithubをのぞいてみたら、githubでも2019年の1月からprivateのリポジトリを無料で作れるようになっていたらし。なので今日はgithubを用いたgitの使用方法について、詳しく説明していこうと思います。
![github-394322_960_720.png](https://qiita-image-store.s3.amazonaws.com/0/264684/eeae847a-2a35-0e48-31d1-b130cf16c1e6.png)


#gitはなぜ必要なの?
gitは複数人でソフトウェアを開発するためのツールで複数人でコードを書いていると作るものを分担して作ったり、誰かがバクを含んだソースコードをデプロイした時に、バクの修正をしやすくすることができる。

初心者の人にわかりやすく説明するとみんなでカレーを作っている時に、野菜を切るひと、肉を切る人、お湯を沸かす人など複数の役割を持って仕事をして、それぞれを完成物をリポジトリとして、切った野菜、切った肉、沸騰したお湯を一つのリポジトリに集結する。イメージはこんな感じ。わかりずらかったらごめんなさい。

#gitとgithubの違い
gitはどんなものかわかったけどgithubってナニ?と思っている人向けにgithubについて説明します。

gitはバージョン管理システムであって、ソフトウェアの名前です。しかし、githubはgitをリモートで使用できるようにしているサービスになります。githubは会社であり、gitはソフトウェアの名前。つまり、windowsはソフトウェアの名前でmicrosoftは会社の名前みたいなものです。windowsとmicrosoftの関係と違うのはgitはオープンソースのソフトウェアであり、誰かが権限を持っている訳ではないので、github以外の会社もリモートでgitのデータを置けるサービスをしている会社がいつくもあります。例えばgitbucketやGitLabなどです。

gitbucketはGUI(グラフィカルユーザーインターフェース)でcommitやpush、リポジトリの作成などが見ることができるのでおすすめです。github,gitlab,gitbucketの三社とも2019年2月現在privateリポジトリが無料で使えるようになっております。

#privateとpublicとは
privateは非公開、publicは公開という意味です。リモートでリポジトリをあげた時に、開発チーム以外のメンバーが除けたら、データの改ざんなどをされてしまったら困りますよね。例えばアプリを作っていて、ライバル企業の人がデータを改ざんできたら、大変なことになってしまいます。なのでリモートのリポジトリには非公開にする機能がついています。

逆にpublic、つまり公開リポジトリはいつ使うの?と思った方はいませんか?だって、誰でもデータをダウンロードできて、変更できたら、データがめちゃくちゃになっちゃうじゃん。例えるなら、2ちゃんねるのような匿名掲示板のようになってしまわないのか?と思うかもしれないが、それはならない。性善説だな。

公開リポジトリはオープンソースのソフトウェアの開発によく使われる。オープンソースにするメリットは、無料で広めることにより、バグの修正や、セキュリティ面の向上などが見込めて、技術が広まる。それに伴って付属で必要になるソフトなどで収益化することでうまくビジネスが回ってる場合が多い。googleなどは最新の技術の開発などにはよくオープンソースでソフトを公開する。オープンソースのソフトはほとんどgithubに乗っていて、なぜかというとgitlabやgitbucketより古株だからだ。雑談はさておきそろそろ、gitの使い方をコマンドを用いて説明していこう。

#さあコマンドでgitをやっていこう。
gitがインストールできていることを前提にやっていきますが、ダウンロードしてない人はこちらからダウンロードしましょう。

#Gitのインストール

インストールが完了したら、git initしてローカルにリポジトリを作成していきましょう。gitを作成するパスは開発中のファイルがあるパスにしてください。

 
`git init`
git initすると隠しファイルで.gitができます。なのでlsコマンドを入力してもみることはできません。

次にナニかしらのファイルをアップロードします。

`git add ./`
git add 追加したいファイル名やディレクトリ名
こちらのコマンドによって現在開発中のファイルがアップロードされました。add は追加するためのファイルを指定するためのものでindex.htmlを追加したい場合にはgit add inidex.htmlとするとindex.htmlをステージングするための準備が整い、全てのファイルをアップロードしたい場合にはgit add ./をしてください。

次にcommitをしていきましょう。commitはaddしたファイルをステージングするためのものです。ステージとはリポジトリの一歩手前でリポジトリにアップロードするにはgit pushをするのですが、pushするファイルはステージに存在します。git commit -m “message”でコミットするときのメッセージを指定します。メッセージには変更した内容などを載せましょう

`git commit -m "message"`
次にリモートのリポジトリにアップロードするためにpushをしていきますが、現在ローカルリポジトリしか作っていないのでこのローカルリポジトリをgithubのリモートリポジトリに変更していきます。

`git remote add origin git@github.com:ユーザー名/リポジトリ名.git`
git remote add originをすることでpushやpullするときのリポジトリをgithubにすることができます。こちらの同期が完了したら、pushをしていきましょう。

`git push origin master`
git push origin ブランチ名←master、今回はmasterブランチにアップロードする。ブランチとはリポジトリに存在するファイルだと思ってください。

ブランチを複数作り、分担し、ブランチにアップロードして、最終的に複数のブランチを組み合わせることでバグを最小限にして開発を進めることができます。

ブランチを作り、カレントブランチをそのリポジトリにするには、git checkout -b ブランチ名

`git checkout -b ブランチ名`
元のmasterブランチに変更するにはgit checkout master をすればmasterブランチに切り替えることができます。

`git checkout master`
masterブランチで誰かがpushして、それを自分のリポジトリにダウンロードしたい時にはpullを使います。

`git　pull origin master`
これでほとんどの使い方がわかったかなー?

説明が下手でごめんなさい。最終的にはリポジトリにあげる時にpush、ダウンロードしたい時にpullすることです。これぐらい今回覚えて言ってくれたらありがたいです。

ブログを最後までご覧いただきありがとうございました。