GitHub再入門（基本操作）

## 基本操作
[1. ファイル登録](http://qiita.com/qio9o9/private/b5a74dcc89d0aac7f83e#1-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E7%99%BB%E9%8C%B2)
[2. ファイル更新](http://qiita.com/qio9o9/private/b5a74dcc89d0aac7f83e#2-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%9B%B4%E6%96%B0)
[3. コミット](http://qiita.com/qio9o9/private/b5a74dcc89d0aac7f83e#3-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88)
[4. ファイル解除](http://qiita.com/qio9o9/private/b5a74dcc89d0aac7f83e#4-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%A7%A3%E9%99%A4)

![status_image.png](https://qiita-image-store.s3.amazonaws.com/0/195839/34fbff8c-de87-8e98-40f8-78115898ed04.png)

[5. 差分確認](http://qiita.com/qio9o9/private/b5a74dcc89d0aac7f83e#5-%E5%B7%AE%E5%88%86%E7%A2%BA%E8%AA%8D)

![diff_image.png](https://qiita-image-store.s3.amazonaws.com/0/195839/372beb39-3870-70a6-7e1b-dcb0029fbf26.png)

## 1. ファイル登録

### 1-1. ファイル登録（untracked->staged）

```cmd:cmd
echo "# create" > file_1.md
git add file_1.md
```
![file_add.png](https://qiita-image-store.s3.amazonaws.com/0/195839/c634e82d-4508-53e2-8458-147ced2afcbb.png)

### 1-2. 論理キャンセル（staged->untracked）

```cmd:cmd
git reset HEAD file_1.md
```
![file_add_cancel.png](https://qiita-image-store.s3.amazonaws.com/0/195839/78a3290d-4504-d16a-cf4b-fbc52e2c3c9c.png)

## 2. ファイル更新

### 2-1. ファイル更新（unmodified->modified->staged）

```cmd:cmd
echo "# update" >> file_1.md
git add file_1.md
```
![file_update.png](https://qiita-image-store.s3.amazonaws.com/0/195839/cfe981e7-5491-ef53-312a-0dc5387cd396.png)

### 2-2. 論理キャンセル（staged->modified）

```cmd:cmd
git reset HEAD file_1.md
```
![file_update_cancel.png](https://qiita-image-store.s3.amazonaws.com/0/195839/78a51f23-b726-2372-9be6-6655ba459faf.png)

### 2-3. stagedまでの物理キャンセル

```cmd:cmd
git checkout file_1.md
```

![checkout_staged.png](https://qiita-image-store.s3.amazonaws.com/0/195839/1a3c85be-df8f-aadb-abf4-c7d764d9275a.png)

### 2-4. 最新コミットまでの物理キャンセル

```cmd:cmd
git checkout HEAD file_1.md
```
![checkout_head.png](https://qiita-image-store.s3.amazonaws.com/0/195839/f836bf98-5047-b349-11dd-7c88cee67b1a.png)

## 3. コミット

### 3-1. 通常コミット
```cmd:cmd
git commit -m "coment"
```
![commit.png](https://qiita-image-store.s3.amazonaws.com/0/195839/de6c6496-14da-860e-0490-44ceca996204.png)

### 3-2. ステージング省略コミット（add + commit）
```cmd:cmd
git commit -a -m "coment"
```
![commit-a.png](https://qiita-image-store.s3.amazonaws.com/0/195839/e9a4e455-58f3-a762-bf65-572a16265969.png)

(*)untrackedなファイルに対する省略コミットは不可

### 3-3. このコミットを最新コミットに統合してコミット
```cmd:cmd
git commit --amend -m "coment"
```
![commit--amend.png](https://qiita-image-store.s3.amazonaws.com/0/195839/91a273b2-8170-7228-d184-dba1a8ad017e.png)

### 3-4. 論理キャンセル（最新コミット直前の復元）
```cmd:cmd
git reset --soft HEAD^
```
![reset--soft.png](https://qiita-image-store.s3.amazonaws.com/0/195839/fb596f87-2969-1413-0be7-3997a87fa2b6.png)

### 3-5. 物理キャンセル（前回コミット直後の復元）
```cmd:cmd
git reset --hard HEAD^
```
![reset--hard.png](https://qiita-image-store.s3.amazonaws.com/0/195839/2f630389-dbbf-fd40-504b-d1babd6d8cd4.png)

## 4. ファイル解除

### 4-1. 論理解除（ファイルは削除されない）
```cmd:cmd
git rm --cached file_*
```
![rm-cached.png](https://qiita-image-store.s3.amazonaws.com/0/195839/9465f1eb-8737-dc7e-96b8-f25259721cdf.png)

### 4-2. 物理解除（ファイルは削除される）
```cmd:cmd
git rm -f file_3.md
git rm file_*
```
![rm.png](https://qiita-image-store.s3.amazonaws.com/0/195839/435eddc8-d1b4-8b12-7c1f-d4031163c7c0.png)

### 4-3. 物理移動
```cmd:cmd
git mv file_1.md file_4.md
```
![mv.png](https://qiita-image-store.s3.amazonaws.com/0/195839/22f87472-166f-bd73-744d-aa027155f63e.png)

## 5. 差分確認

![diff_image.png](https://qiita-image-store.s3.amazonaws.com/0/195839/372beb39-3870-70a6-7e1b-dcb0029fbf26.png)

### 5-1. modifiedとstagedの比較
```cmd:cmd
git diff file_1.md
```

### 5-2. stagedと最新コミットの比較
```cmd:cmd
git diff --staged file_1.md
```

### 5-3. modified+stagedと最新コミットの比較
```cmd:cmd
git diff HEAD file_1.md
```
![diff.png](https://qiita-image-store.s3.amazonaws.com/0/195839/32d3dc5e-6c04-c74b-ddd6-5ba73d377414.png)