文系卒開発初心者がまとめるGitHubの使い方

#はじめに
>エンジニアもすなるGitHubといふものを、文系卒開発初心者もしてみむとてするなり

ということで、ウチもGitHubでバージョン管理したり、ソースコードを公開したい！！

つい先日、iOSアプリ開発の企画を立ち上げてみました。
とはいえITの業界に入って半年。個人開発の経験も0、iOSアプリ開発の経験も0で何から始めればいいのやらという状態です。

アプリ制作に必要なプログラミング技術等については目下お勉強中ですが、どうやら、それらの技術的知識とは別に、開発を支える管理ツール等についても知識を深めていく必要があるみたいです。

今回は、ソースコード管理サービス **GitHub** についてまとめていきたいと思います。

ちなみに、開発の様子は以下で投稿していますので、良ければご覧ください！！
[初心者二人で0から麻雀アプリ開発](https://qiita.com/RTkd59/items/3968bff9a1d9982cd1db)



#目的
今回は、Xcodeをインストールしただけの状態から、環境を構築し、GitHubで成果物を公開するところまでの手順の理解を目的とします。
以下の順番で手順をまとめていきます。

* GitHubとはなにか
* Macに導入してみる
* GitHubに成果物を上げる


#GitHubとはなにか
調べる前まで、ソースコードをバージョン管理したり、みんなに公開できる場所＝GitHubだと思っていました。

だがしかし、この認識はちょっと間違いでバージョン管理システムと、みんなに公開できるサービスとで別物なのでした・・・。
以下にもう少し詳しく書きます

◆Git
プログラムのソースコード等の変更履歴をを記録しておくための分散型バージョン管理システム
個人の管理場所（ローカルリポジトリ）と、みんなの管理場所（リモートリポジトリ）でそれぞれバージョン管理を行える。

◆GitHub
みんなが作ったソースコード等をを保存、公開できるソフトウェア開発のプラットフォーム
Gitのリポジトリを世界中の人が見られるサーバに公開することができる。ほかにも、コードレビュー機能やWikiなどのコミュニケーションツール機能を利用することができる。

より詳しい説明は、ネット検索でたくさん出てきますので調べてみてください。今回参考にさせていただいたサイトリンクを以下に置いておきます。
[バージョン管理の説明とGitの使い方](https://tracpath.com/bootcamp/learning_git_firststep.html)
[GitHubの使い方](https://techacademy.jp/magazine/6235)

#Macに導入してみる
####GitHubにアカウント登録
まずはGitHubにアカウントを作ります。

①以下のリンクから、GitHubのトップページに飛びます。
[GitHub公式](https://github.com/)
　

②こんな感じの入力フォームがあるので、必要情報を入力し、[Sign up for GitHub]をクリック
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/824096/6c682b04-82b7-4f10-d55f-f94176558a45.png)
　

③己が存在証明を突破し、[Join a free plan]をクリック

ちなみに[Join a free plan]の上のチェックボックスは、製品の更新情報やお知らせをメールで送りますか？
というやつみたいです。お好みで。
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/824096/97af1475-59c0-c6d2-0217-bbfe9043eea8.png)

　

アカウント登録が終わると、設定したメールアドレスに認証メールがきます。
メール本文の[Veify email address]をクリックしてアカウント作成完了！！

####リモートリポジトリの作成
続いて、リモートリポジトリを作成します。
Gitで作成したローカルリポジトリ(後述)から、このリモートリポジトリに成果物をPUSH(送る)ことで、世界中の人に公開することができます。

それでは作成していきます。
　


①先ほど認証メールをクリックしたことで、ブラウザが立ち上がっていると思います。左側の[Create a repository]をクリック
ない人は改めてGitHubにログインし、左側の[Create repository]をクリックしてください。

　
②リポジトリの名前を入力し、Publicを選択して[Create repository]をクリック
※1　Descriptionには、リポジトリの説明文を追加できます。任意
※2　Privateを選択すると、非公開のリポジトリになります。
※3　Add a README file→リポジトリにREADMEファイルを追加できます　Add .gitnore→特定のファイルを非公開に設定できます　Choose a licence→ライセンスを設定できます
これらは後からでも設定できます

![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/824096/c0372299-3593-e8f8-9c33-d48ce67a8d6c.png)

リモートリポジトリの作成完了！

####Gitの導入
続いて、自分のPCにGitを導入し、ローカルリポジトリを作成していきます。

①まずは、PCにGitが入っているか確認します。ターミナルを起動し、以下を実行します。


```:ターミナル
$ git --version
```
 
 

すでにGitが入っている場合は以下のようにバージョンが表示されます。
どうやらXcodeを入れた際に一緒に入れた、コマンドライン・デベロッパーツールなるものにGitが含まれていたようです。

```:ターミナル
$ git --version
git version 2.24.3 (Apple Git-128)
```

Gitがインストールされていなかった場合、このような表示が出るようです。インストールしましょう。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/824096/5880379d-0969-57ff-e517-64bf86df0622.png)

　

②インストールを確認したら、Gitの初期設定をします

ユーザー名登録

```:ターミナル
git config --global user.name 任意のユーザー名
```

メールアドレス登録

```:ターミナル
git config --global user.email 任意のメールアドレス
```

入力が終わったら、以下のコマンドで登録内容を確認できます。

```:ターミナル
git config --list
```

 　


③初期設定が完了したので、ローカルリポジトリを作成していきます。
任意のディレクトリに移動して以下を実行します。
今回はデスクトップにprojectsフォルダを作成し、リポジトリ化します。

```:ターミナル
cd /Users/Macのユーザー名/Desktop/projects
git init
```

これでローカルリポジトリを作成することができました！
対象のフォルダ配下にファイルを置いてcommit操作を行うことでリポジトリにファイルを追加することができます。

#GitHubに成果物をあげる
ローカルで作成した成果物をリモートリポジトリに反映していきます。

まずは、ローカルリポジトリに成果物をコミットします。
今回は、projects配下にtest.txtを作成し、コミットしていきます。

①以下を実行し、test.txtをローカルリポジトリに追加します。

```:ターミナル
git add test.txt
```

 
　 
②続いて、以下を実行してコミットします。

```:ターミナル
git commit -m "コミットの内容を記載"
```

　
　
③追加されているか、以下を実行して確認します。

```:ターミナル
git status
```

これでローカルリポジトリに成果物を追加することができました！
続いて、ローカルリポジトリの状態をリモートリポジトリに反映していきます。

　

④以下を実行し、ローカルリポジトリとリモートリポジトリを紐づけていきます。
https://~~　は、先ほど作成したリモートリポジトリのアドレスを使用してください。

```:ターミナル
git remote add origin https://~~
```

 


　
⑤以下を実行してローカルリポジトリの変更をpushします。
GitHubのユーザー名とパスワードを聞かれるので入力してください。

```:ターミナル
git push origin master
```

これでリモートリポジトリに変更を反映することができました！
このリモートリポジトリは、公開設定されているので、反映した成果物は世界中の方々に公開されている状態です。

#おわりに
以上、GitやGitHubが何者かわかっていない状態から、リモートリポジトリに成果物を登録するまでをやってきました。

実際の運用では、ローカルの開発はブランチを切って作業し、masterには直接pushしない等、いろいろ決め事をする必要があります。

運用方法などについては、またの機会に改めてまとめたいと思います。