Git(Hub) Private Repository 作成からConflict解消まで[学生初心者向け](前編)

#はじめに
Make IT Advent Calendar 2018 14日目です。
前回の記事は@feketerigo222のスクレイピング技術についてでした　まだ見ていない方は[*こちら*](https://qiita.com/feketerigo222/items/40f2f3d4bb73cacb6306)
素晴らしい記事をありがとうございます。 ためになりました。やっぱしガルパンは良いですよね
女の子が可愛いだけではなく、戦車もきちんと史実どおり作り込まれていてファンが多いのも納得です
そんな話をしている私もガルパンおじさんです
~~ガルパンはいいぞ~~
追記：この記事は前編後編で分かれています。
前編ではGitの基本的な操作方法・Git・Githubについて紹介しています。
コンフリクト解消については後編の記事で紹介します
後編の記事は[こちら。](https://qiita.com/moya0423/items/2b21ef565787fb0e01da)
##開発環境について
windows10
Git version2.20.0で開発しています
自身もプログラミングを初めて数ヶ月のため間違った情報が多文に含まれています。編集リクエストを投げてもらえると嬉しいです。
##なぜGitを学ぼうと考えたのか
![Git-Logo-2Color.png](https://qiita-image-store.s3.amazonaws.com/0/264212/2f30d98e-0a6c-99ce-1231-b11afe0c5424.png)
###前後編の記事を通して、Git-Bashの基本的なコマンド、コンフリクト解消の仕方を学ぶことを目的にしています。

本題に入ります
なぜGitを学ぼうと思ったのか??
企業などでも多く使われているGit/GitHub
ローカルコミットやブランチを使った開発など、
チームで作業することがこの先も多いと考えると早いうちにGitを使いこなせるようになったほうが今後のためにもなると思い今回のAdvent Calendarを機に学習しようと考えました。
~~CUI画面の方が何かかっこいいしね  脱SourceTree~~
##学生用アカウントの作成
GithubのPrivate Repositoryを無料で使うために学生用アカウントで登録します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/264212/ece26448-0c29-cb7f-0317-5b34af489133.png)

[Student Developer Pack - GitHub Education](https://education.github.com/pack)

GitHubのアカウントを学校から配布されているメールアドレスで登録し、そのアカウントで上記のリンク先にある
「Get Your Pack」を選択、翻訳しながら適当にポチポチしておけばPrivate Repositoryが作れるようになります
詳しくは先人達が記事で紹介してくださっているので、こちらを参考にしてください
[無料でGithubのprivateリポジトリを作る方法](https://qiita.com/mtfum/items/d8c06c9a28ce04d3043a)

##Private Repositoryを作るメリット
そもそもPrivate Repositoryを作るメリットはなんぞや、Public Repositoryでいいじゃん。
と思った人のためにPrivate Repositoryのメリットを紹介します。
...
はい、ぶっちゃけ物凄いメリットがある訳では無いです　強いて言うなら見られたくないコードや社外秘の物など機密性が求められるときに使えるなぁと感じるくらいです。　今回は作りたかったから作ってみました(好奇心)


様々な人からコードを見てもらったほうが指摘やご意見を貰えるので、公開リポジトリの方が様々なメリットが受けられると考えています。
特に理由がない限りは公開リポジトリをおすすめします。
[Private Repositoryの作り方](https://qiita.com/mtfum/items/d8c06c9a28ce04d3043a)
##Git-Bashのインストール
[GIt公式ページ](https://git-scm.com/)


上記のサイトからGit-Bashをインストールしましょう
インストール時に英語がずらずら並べられますが気にせずにポチポチして問題ないです。
##Git-Bashの基本的なコマンド
Git-Bashを入れられた所でGit-Bashの簡単なコマンド・使い方を紹介します。
コマンドが多すぎるので大まかに紹介します。
先程インストールしたGit-Bashを起動し、以下のコマンドを打ちます。
先ずは簡単なファイル操作関連のGit-Bashコマンドから

```console
ローカルフォルダに移動
$ cd "移動先のパス"

新しいフォルダの作成
$ mkdir "フォルダ名"

 新規ファイルの追加
$ touch "作りたいファイル名"

ファイルの削除
$ rm "ファイル名"

フォルダの削除
$ rm -r "ディレクトリ名"

フォルダの名前を変更する
$ mv "変更前のファイル名" "変更後のファイル名"

今いるフォルダのパスを確認する
$ pwd
```

###「練習」ファイル操作コマンドで遊んでみる
実際に自分の手で動かしてみましょう Let's try

- Desktopに移動
- フォルダを作成
- 中身にテキストファイルを作成
- 今いるフォルダリパスを表示する
- Desktopに戻る(一つ前の階層へ戻る)
- フォルダ名を変更する
- 作成したフォルダを削除する

以下、答え合わせ。

```console
デスクトップに移動
$ cd Desktop

フォルダを作成 (ファイル名に空白等がある場合は""で囲みましょう)
$ mkdir "hoge hoge"

hoge hogeフォルダに移動
$ cd "hoge hoge"

テキストファイルを作成
$ touch fuga.txt

今いるフォルダパスを表示する
$ pwd

Desktopへ戻る
$ cd ../

フォルダ名変更
$ mv "hoge hoge" fuga

フォルダを削除
$ rm -r fuga
```
出来ましたか？
これが出来るだけで何となくプログラマーっぽいですね()
記事が長くなってしまうので次行きます。
##Git Githubの違いと特徴を理解しよう
混同されがちなGitとGithub　全然違うのでしっかりと理解しましょう。
### Gitとは
![savekazu.png](https://qiita-image-store.s3.amazonaws.com/0/264212/a497b643-36c5-98bc-de78-f079598b654b.png)

Gitとは分散型管理システムの一つで、元々はLinuxのソースコードを管理するために管理されました（定型文）
簡潔に言うと、変更したファイルを保存・読み込み・書き込み・改変出来たりします。セーブデータの様なイメージです。記録したセーブデータ（状態）に何時でも戻ることが出来ます
###Githubとは
![github-logo-1000x333.png](https://qiita-image-store.s3.amazonaws.com/0/264212/71675e44-ee01-6e2e-e783-8d27bd10f5fa.png)
「Git」を使っている人に向けてのWebサービスです。
自分の書いたコードを公開・Gitをオンライン上で管理するシステムです。
問題管理機能やSNS機能も備えています。Git単体よりも簡単にセーブデータを共有出来ます。
Githubにリモートリポジトリ(共有セーブデータ)を置いている企業・団体・個人が多いです。
##ローカルリポジトリ・リモートリポジトリとは
####そもそもリポジトリとは
Repository(リポジトリ）とは直訳すると貯蔵庫の事で、リポジトリと検索すると定義が様々です。ここでは
GitやGitHubで管理されているフォルダやファイルを一元的に管理する格納場所をリポジトリと定義します。

####ローカルリポジトリとは

"ローカル"リポジトリとあるように、他人には見えない（パソコン内の）個人単位のリポジトリです。(個人セーブデータ)

####リモートリポジトリとは

ネット上にファイルをアップロードした状態でファイルを管理するものですGitHubやBitbucketが展開している主要サービスこれに該当します。多人数と同じリポジトリを操作出来るなどの特徴があります。(共有セーブデータ)

##リポジトリ作成・操作 扱い方を覚えよう

実際にリポジトリを作成・操作をしていきましょう。
手始めにGitで管理するフォルダを作成しましょう。
Git-Bashで以下のコマンドを入力します。

```console
フォルダの作成
$ mkdir hogeplactice //適当なフォルダ名

作成したフォルダに移動
$ cd "先程入力したフォルダ名"

$ git init　//下記で説明
```

git initとはこのコマンドを実行した以下のフォルダをGitで管理しますよ。という命令文です。.gitというサブディレクトリ(フォルダ)テンプレートが設置されます。
ちなみに同じ階層でもう一度`$ git init`した場合.gitが再初期化されます。
これでGitで管理されるフォルダを作ることが出来ました。
このフォルダのことをローカルリポジトリと呼びます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/264212/42fa18e5-f3cf-7838-d269-d624237e809e.png)
ファイル管理を行うためにはcommit(コミット)やpush(プッシュ)などのコマンドを実行する必要があります。故にリポジトリを操作する頻度は多いです。その度に状態は変化するので、こまめに状態を確認する必要があります。確認するコマンドは以下の通りです。

```console
$ git status
```

![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/264212/f1bff3d9-f22c-088b-1c83-ad8e1ce90813.png)
このような結果が表示されたと思います。~~個人情報のため、一部モザイク処理をかけています~~
今はmaster(マスター)というbranch(ブランチ)にいるよ！　commit(コミット)はまだないよ！と言われています。
特段操作をしていないので、このように表示されますがリポジトリは状態変化が激しいため何か一つする度に`$ git status`する癖を付けましょう。

---
記事が長くなってしまうので前編後編に分けることにしました。後編の記事は[こちら](https://qiita.com/moya0423/items/2b21ef565787fb0e01da)です