初心者のGit, GitHub

# 1. 目的

ソースコード整理のためにGitとGitHubを利用することにしたので、初心者向けのGitコマンド等を初心者レベルでまとめました。（備忘録も兼ねています）
間違っている部分や言葉が足りない部分があればご教示ください。

# 2. Git, GitHub

* <font color="Red">**Git**</font> https://git-scm.com/
  * 「分散型バージョン管理システム」
  * ローカルのPCで編集作業を行い、ファイルの修正履歴も管理できる。

* <font color="Red">**GitHub**</font> https://github.com/
  * 「ソフトウェア開発プラットフォーム」
  * Gitを用いてソースコードを管理するための共有ウェブサービス。

# 3. 環境構築

## 3-1. バージョン確認

```
$ git --version
git version 2.18.0.windows.1
```

## 3-2. ユーザ名とメールアドレスの設定

```
$ git config --global user.name 【ユーザー名】
$ git config --global user.email 【メールアドレス】

$ git config --list    //設定の確認
user.name=【ユーザー名】
user.email=【メールアドレス】
...
```

# 4. GitHub使用

## 4-1. Gitの作業ディレクトリ作成

```
$ mkdir git
$ cd git
```

## 4-2. リポジトリをローカルにクローンする

リモートリポジトリの内容をローカルにクローンする。

リポジトリ：データを保存する場所。
リモートリポジトリ：サーバに保存され、共有されるリポジトリ。
クローン：リモートリポジトリを複製すること。

```
$ git clone git@github.com:【ユーザー名】/【リポジトリ名】.git
Cloning into '【リポジトリ名】'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
```

クローンが完了し、リモートリポジトリの内容がローカルにコピーされている。
次に、ローカルリポジトリに移動する。

```
$ cd 【リポジトリ名】
```

## 4-3. リポジトリのブランチ

作成時のリポジトリにはmasterブランチのみが存在する。

```
$ git branch
* master
```

## 4-4. 作業ブランチの作成

```
$ git branch new_branch    // new_branchという名前のブランチを作成
$ git branch
* master
  new_branch
```

アスタリスクがついているブランチは現在選択中のブランチ。
new_branchブランチに移動する。

```
$ git checkout new_branch
Switched to branch 'add-new-file'
$ git branch
  master
* new_branch
```

※参考：Gitのブランチの切り方は[GitHub Flow](https://gist.github.com/Gab-km/3705015)のワークフローを採用

## 4-5. ファイルを追加してコミット

例えるならメールの下書き保存。

新規ファイル（今回は`sample.txt`）はコミットする前にaddする必要がある。

```
$ git add sample.txt
$ git status
On branch new_branch
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    
    new file:   sample.txt
```

`sample.txt`がコミットされていないのでコミットさせる。

```
$ git commit -a
$ git status
On branch add-new-file
nothing to commit, working tree clean
```

`-a`：ここまでのすべての修正をコミットさせる

コミット：修正内容をローカルリポジトリに反映すること。

この段階で、ローカルでコミットが完了。

※参考
[git addで変更されたファイルをステージングエリアに追加する方法【初心者向け】](https://techacademy.jp/magazine/10168)
[git commitを使って変更内容をコミットする方法【初心者向け】](https://techacademy.jp/magazine/10172)

## 4-6. GitHubへプッシュする

プッシュ：ローカルリポジトリの内容をリモートリポジトリに反映すること。例えるならメールの送信。

```
$ git push origin new_branch
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 319 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:github-sample/test.git
 * [new branch]      new_branch -> new_branch
```

※参考
[git pushを使ってリモートリポジトリへプッシュする方法【初心者向け】](https://techacademy.jp/magazine/10271)

# 5. 参考

* [今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説](https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000)
* [GitHub Flow](https://gist.github.com/Gab-km/3705015)
* [今さら聞けない！GitHubの使い方【超初心者向け】](https://techacademy.jp/magazine/6235)
* [【Git】基本コマンド](https://qiita.com/konweb/items/621722f67fdd8f86a017)
* [git pullを使ってリモートリポジトリと同期する方法【初心者向け】](https://techacademy.jp/magazine/10274)
* [git remoteを使ってリモートリポジトリの追加と削除を行う方法【初心者向け】](https://techacademy.jp/magazine/10268)
* [Gitの学習ができる記事まとめ｜TechAcademyマガジン](https://techacademy.jp/magazine/programming/git)