【 GitHub 】ローカル作成したリポジトリをリモートに「Push」するまで！

#はじめに 【GitHub初心者向け】
自分自身なんとなく理解しているつもりになって、
__(Gitコマンド)__ ```add```,```commit```  , ```push``` etc を叩いていましたが、
本稿執筆にあたり、さらに詳しく理解してもっと<font color="red">__Git(Github)__</font>を使いこなそうと初心にかえり、
初めて[GitHub](https://github.com/)に触れた頃のメモをQiita記事にしてみました。

_内容に関しては、<font color="red">GitHub初心者向け</font>の内容となっています。
表現が不適切な箇所もあるかとございますが、何卒ご容赦いただけますと幸いです。_

それでは、__Git__と__GitHub__について書きたいと思います。

#Gitとは？
- __分散型バージョン管理システム__の一つです。
- 元々は、__<font color="red">Linuxカーネルのソースコードを効率的に管理するため</font>に、
<font color="red">Linuxの生みの親であるリーナス・トーバルズ氏によって開発</font>された。__(2005年)
- __どんなドキュメント__でも、__<font color="red">すべての段階の草案やアップデート履歴を保存し、管理</font>できる。__  
(※ソースコードに限らない。Excel,Wordのファイルも管理可能)

>プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。[(Wikipediaより引用)](https://ja.wikipedia.org/wiki/Git)

#GitHubとは？
- __Gitを利用した<font color="red">リモートリポジトリ(共有リポジトリ)</font>を提供するWebサービス。__
- __1.<font color="red">フォーク ( fork )</font>__、__2. <font color="red">プルリク ( pull request )</font>__、__3. <font color="red">マージ ( merge )</font>__ etc の機能を持つ。  


#実際にGit、GitHubを使ってみる。
__[前提条件]__
1. __Githubアカウントのユーザーアカウントを保持__していること。
2. __Gitコマンド__が__インストール済み__であること。__<font color="red">(※パスを通す)</font>__

#今回、実践すること。
__1. <font color="teal">ローカルリポジトリの作成__
__2. <font color="teal">リモートリポジトリの作成__
__3. <font color="teal">ローカルリポジトリの変更内容をリモートリポジトリにプッシュ__

##1. Gitのユーザー名、メールアドレスを登録する。(CLI)
####1. ユーザー名を登録
```
$ git config --global user.name <username>
```
####2. メールアドレスを登録
```
$ git config --global user.email <emailaddress>
```

####3. 登録内容を確認
```
$ git config --global --list
```

<font color="teal">__・実際にコマンドを実行__</font>
<img width="564" alt="スクリーンショット 2017-05-27 23.06.58.png (80.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/27/10862/a82ccc47-7b7f-4cd9-b23d-94a95923d467.png">

##2. Gitで管理するプロジェクトファイルを新規作成する。
####1. フォルダ作成
```
$ mkdir helloWorld
```

####2. 新規作成したフォルダ内に移動し、リポジトリの初期化を行う。
```
$ git init
```

<font color="teal">__・実際にコマンドを実行__</font>
<img width="515" alt="スクリーンショット 2017-05-27 23.16.43.png (37.6 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/27/10862/3992d32c-22e3-4197-b8a1-117fd778a91a.png">

※__リポジトリの初期化__とともに、```/.git/ディレクトリ(隠しフォルダ)```が作成されます。

##3. 新規ファイルを作成して、Git管理下に置く。
####1. 「HelloWorld 」プロジェクトファイル配下に新規ファイルを作成する。
```
$ touch hello.txt
```

####2. 現在のリポジトリ内のステータス状況を確認します。
```
$ git status
```

####3. 新規作成したファイルをステージングに追加する。
```
$ git add hello.txt
```

管理対象に追加することで、変更履歴の記録を開始します。
>複数ファイルの変更をステージ環境に反映する場合は、
ワイルドカードを使用することができます。
git add ’＊.txt’

####4. ステージングにあるファイルをローカルリポジトリに追加する。
```
git commit -m 'first commit'
```

>-m　"◯◯◯◯◯◯◯"
オプションでコメントを追加することができます。

```git commit``` を実行することで、__git addでステージ環境に追加した変更履歴全て__を
リポジトリに反映させることができます！

<font color="teal">__・実際にコマンドを実行__</font>
<img width="544" alt="スクリーンショット 2017-05-28 0.02.14.png (89.8 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/28/10862/8ac1c341-543b-42cf-b972-87c06f015566.png">


##4. ローカルリポジトリの内容をリモートリポジトリに反映
####1. リモートリポジトリを作成する。
__[Github](https://github.com)にログイン__し、管理画面より```リモートリポジトリ```を作成します。

<img width="1033" alt="スクリーンショット 2017-05-27 23.45.58.png (163.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/27/10862/7e9e8569-9204-4cbc-b253-ba3788b5a5de.png">

右上の```「＋」```ボタンを押下し、```「New repository」```より<font color="red">__リモートリポジトリを新規作成__</font>する。

<img width="1010" alt="スクリーンショット 2017-05-27 23.50.06.png (220.9 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/27/10862/6295bbba-f2d3-421e-b2e9-2b8894b78fb6.png">

```リポジトリ名(Repository name)```と```説明(Description)```等を設定し、__「Create repository」ボタンを押下__すると、__新しいリモートリポジトリを作成する__ことができます。

>※有料アカウントのみ、公開範囲の設定(Public or Private)が可能です。
また、README.mdを作成するかしないかをチェックボックスで選択することが可能です。

<font color="red">__「入力例」__</font>
<img width="740" alt="スクリーンショット 2017-05-27 23.54.33.png (147.7 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/27/10862/0e5b6a4a-f6e9-4d95-bc81-9f0dd4de6ff5.png">

<font color="teal">__「リモートリポジトリ  -  ホーム画面」__</font>
<img width="1016" alt="スクリーンショット 2017-05-27 23.55.47.png (146.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/27/10862/e0d695eb-b4ea-4e60-ac1d-590309a5ffaa.png">

####2. リモートリポジトリURLをGitコマンドで登録します。
```
$ git remote add <RemoteRipositoryName> <RemoteRipositoryURL>
```

<font color="teal">__・実際にコマンドを実行__</font>
<img width="563" alt="スクリーンショット 2017-05-28 0.05.16.png (19.2 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2017/05/28/10862/53382f70-7d7a-4a03-bfe8-c8d30fe48eab.png">


####3. ローカルリポジトリの内容をリモートリポジトリにPush(アップロード)します。

```
$ git push <RemoteRepositoryName> <LocalRepositoryName>
```

<font color="teal">__・実際にコマンドを実行__</font>
<img width="462" alt="スクリーンショット 2017-05-28 0.06.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/180432/7b71c0cc-b1aa-6c9c-8286-27e2623ef637.png">

上記作業にて、
__1. <font color="teal">ローカルリポジトリの作成</font>__
__2. <font color="teal">リモートリポジトリの作成</font>__
__3. <font color="teal">ローカルリポジトリをリモートリポジトリにpush(アップロード)</font>__
の__一連の流れが完了__しました。

####4. リモートリポジトリでコミット内容を確認してみる。
最後に__<font color="red">リモートリポジトリにローカルリポジトリの変更内容が反映</font>__されているか確認してみる。

<img width="994" alt="スクリーンショット 2017-05-28 0.15.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/180432/43121f96-03be-012a-3ffd-fad5b3114ff4.png">

__ローカルリポジトリで作成された```「Hello.txt」```がリモートリポジトリに追加されていることを確認__できました。

しっかりと、```「-m」```オプションで付加したコメントも反映されていることが確認できると思います。

本日は、ここまで！

##その他、GitHubライフに役に立つコマンド集(10選)

####1.これまでのコミットログを確認

```
$ git log
```
上記コマンドを実行することで、これまでのコミット履歴を確認することができます。

####2.リモートリポジトリの名称と、URLを追加

```
$ git remote add <リモートリポジトリ名称>
 <リモートリポジトリURL>
```

####3.ローカルでの変更履歴をリモートリポジトリに反映

```
$ git push -u <リモートリポジトリ名> <ローカルブランチ名>
```
>-u オプションを付けることで、次回以降
<リモートリポジトリ名>、<ローカルブランチ名>の入力を
省略することができます。

```
$ git push
```

####4.変更があった箇所を確認

```
$ git diff HEAD
```
 ローカル (作業)リポジトリとローカルを比較

```
$ git diff -stage
```
ステージとローカルを比較

####5.ステージ環境に反映したファイルを取り消し

```
$ git reset < ファイル名>
```

####6.ブランチを作成する

```
$ git branch <新しいブランチ名>
```

####7.ブランチを切り替える

```
$ git checkout <ブランチ名>
```

####8.ファイルを削除(ステージ環境に削除ログを反映)

```
$ git rm <ファイル名>
```
>git addの反対のイメージとして捉えると分かり易い？

####9.変更箇所をマージする

```
$ git merge <マージ元のブランチ名>
```

###10. ブランチを削除する

```
$ git brnch -d <削除したブランチ名>
```

#参考文献まとめ

[Git超絶まとめ](http://qiita.com/masashi127/items/2e103c3fba9d1b058961)
[ブランチの削除方法](http://qiita.com/iorionda/items/c7e0aca399371068a9b8)
[リモートブランチをローカルに落としてくる方法！](http://sessan.hatenablog.com/entry/2012/11/04/132746)