Gitで基本操作のリポジトリ初期化、ステージ領域へ追加、ステージのコミット、コミットログの確認、変更差分の確認をした。

#環境
・Git version 2.20.1.windows.1

#今日の目標
Gitの基本操作を知る。

#目次
1.リポジトリを初期化する。
2.リポジトリの状態を確認する。
3.ステージへファイルを追加する。
4.ステージされたファイルをコミットする。
5.コミットログを確認する。
6.変更差分を確認する。

#1.リポジトリを初期化する。

Gitリポジトリの初期化する。
まずはリポジトリとなるディレクトリを作成する。

```
mkdir sample-dir
```

dirコマンドなどで無事作成されたことを確認したらcdでディレクトリを移動する。

```
cd sample-dir
```

初期化コマンドを実行する。

```
git init
```

コマンド実行後、エクスプローラから対象のディレクトリを確認すると.gitというディレクトリが作成されている。
この.gitに管理するリポジトリのデータが格納されていく。

また、このリポジトリ配下に作成されるデータをワークツリーと呼ぶらしい。
ここで格納されたデータをリポジトリに登録していく。
データを復元する際はリポジトリに格納されているファイルをこのワークツリーへ再構成する。


#2.リポジトリの状態を確認する。

```
git status
```

現在のGitリポジトリの状態を参照できる。
確認したところこんな感じになっていた。

```
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

```
現在masterというブランチにいて、コミットされた事がわかる。
touchコマンドでファイルを作ります。

```
touch README.md
```

この状態でもう一度statusコマンドをたたく。

```
git status
```

するとこんな感じの内容が返ってくる。

```
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        README.md

nothing added to commit but untracked files present (use "git add" to track)
```

意味としてはREADME.mdってファイルがステージ領域に追加されていない事を示す。

#3.ステージへファイルを追加する。

Git管理対象にするためにaddコマンドを実行する。

```
git add README.md
```

git statusコマンドで結果を確認する。

```
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   README.md



```

Changes to comittedにnew fileとしてREADME.mdが追加された。
これでステージ領域への追加が完了した。

#4.ステージされたファイルをコミットする。

ステージされたファイルをリポジトリに記録する。

```
$ git commit -m "First commit"
[master (root-commit) 1da12c3] First commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md

```

-m "First commit"でコミットメッセージを付加する。

git statusで状態を確認してみる。

```
$ git status
On branch master
nothing to commit, working tree clean
```

ステージにあったファイルがなくなり、リポジトリにコミットできたことがわかる。

上記とは別パターンでのコミット方法もある。
詳細にコメントを記載したい場合は、次のように実施する。

```
git commit
```

するとエディタが起動する。

```
\# Please enter the commit message for your changes. Lines starting
\# with '#' will be ignored, and an empty message aborts the commit.
\#
\# On branch master
\# Changes to be committed:
\#	new file:   README2.md
\#
```

次のルールでコメントを記載する。

・1行目:コミット内容を１行で記載
・2行目:空行
・3行目:変更した理由や詳細を記述

```
\# Please enter the commit message for your changes. Lines starting
\# with '#' will be ignored, and an empty message aborts the commit.
\#
\# On branch master
\# Changes to be committed:
\#	new file:   README2.md
\#
テストコミット

テストしたかったから。
```

記載が完了したらエディターを閉じる。


#5.コミットログを確認する。

git logコマンドで確認できる。

```
$ git log
commit 1e18d76875063f058644bbc2083447bc95aae385 (HEAD -> master)
Author: ぼくのなまえ <僕のメルアド>
Date:   Thu Feb 14 21:41:36 2019 +0900

    テストコミット

    テストしたかったから。

commit 1da12c37794122b58c6c099067c27249c38c24c1
Author: ぼくのなまえ <僕のメルアド>
Date:   Thu Feb 14 21:28:47 2019 +0900

    First commit
```

特定のファイルだけ確認したい場合

```
$ git log README.md
commit 1da12c37794122b58c6c099067c27249c38c24c1
Author: ぼくのなまえ <僕のメルアド>
Date:   Thu Feb 14 21:28:47 2019 +0900

    First commit

```

他にもいろいろとオプション指定があるけど都度都度学ぶことにする。


#6.変更差分を確認する。

リポジトリに登録したREADME.mdに変更を加えて、リポジトリに登録されている状態のREADME.mdと差分を突き合わせする。
作業ディレクトリになるREADME.mdに１行だけ文字を追加する。


```
$ git diff
diff --git a/README.md b/README.md
index e69de29..165f58f 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+<83>I<83><8C><81>@<83>v<83><8D><83>O<83><89><83><80><81>@<83>E<83>S<83>J<83>X
<81>@<83>I<83>}<83>G<81>@<83>Q<83><93><83>V<83>W<83><93><81>@<83>i<83><8B>
\ No newline at end of file

```

文字化けした。ここは別問題なので今は解決に時間をかけないことにした。
先頭に+++や+が記載されている部分が新規で追加された部分という意味らしい。

***
本日はここまで！
Javaの勉強したい！ｗ