Gitの基本的な使い方～ローカル編～

# Introduction
Gitをローカルのみで使う時に必要な操作についての個人的メモ．
ターミナルでのコマンド操作とVSCodeでのGUI操作の両方まとめる．
環境はWindows

# バージョンの確認
Gitがインストールされているかをまずは確認
```:terminal
git version
```
```
git version 2.38.0.windows.1
```

# ユーザー設定
まずはユーザー名とメールアドレスを設定
この作業はgitインストール後に一度だけ実行すればよい
```:terminal
git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"
```
正しく設定できたか一応確認
```:terminal
git config --global --list
```
```
user.name=ユーザー名
user.email=メールアドレス
```

# ローカルリポジトリの作成
フォルダ内に隠しファイル.gitが作成される
```:terminal
git init
```
```
Initialized empty Git repository in フォルダの場所
```
vscodeではソース管理タブの"initialize Repository"をクリック
![init_vs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/2e7ab043-48f2-fe60-f9c5-7cbdf335275b.png)

# ステータスの確認
```:terminal
git status
```

```
On branch master

No commits yet

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

nothing added to commit but untracked files present (use "git add" to track)
```
vscodeではまだgitの管理下にないためsample.mdの横に**U**(Utracked)と表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/42f56abd-fd5b-34d0-7a1e-7754680119a7.png)

# ステージング
git管理下のすべてのファイルをステージング

```:terminal
git add .
```
ソース管理タブChanges内の**＋**マークをクリック
![add_vs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/b044ba81-8f68-27fa-b352-2a91834f2ea1.png)

# ステージングの取り消し
ステージングの取り消し

```:terminal
git reset .
```
ソース管理タブStaged Changes内にカーソルを合わせると出現する**ー**マークをクリック
![reset_vs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/1ed4323b-226a-57b5-0883-42d4054f281a.png)

# コミット
コミットメッセージを"first commit"としてコミット
```:terminal
git commit -m "first commit"
```

```
[master (root-commit) e1c3610] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 sample.md
```
ソース管理タブ内のメッセージ入力バーにコミットメッセージを入力して**Commit**をクリック

![commit_vs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/3a14891c-6363-6e24-7f2c-c93edd07f884.png)

# ブランチの作成
基本的にファイルの修正などはmasterブランチではなく新しいブランチを作成して行う．

```:terminal
git branch edit-file
```
1. **master**をクリック
2. ポップアップが表示されその中の**Create new branch**をクリック
3. ブランチ名を入力しエンターキー
1
![branch.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/ee44256b-b30e-4c69-f172-c6d1492b1fc4.png)
2
![branch2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/00fe7bed-20e0-9d38-8344-757efaf51f2f.png)
3
![branch3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/c0c26f29-fca2-1940-ee75-6d80ca580e29.png)

# ブランチの確認
現在選択されているブランチに*マークがつく
```:terminal
git branch
```

```
  edit-file
* master
```

ソース管理内に表示されているブランチが現在の選択されているもの
ブランチ名をクリックすると作成済みのブランチ一覧がポップアップする
![branch.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/fb56a36c-5f49-b5d6-879b-c9b7b7f71ec7.png)

# ブランチの切り替え
```:terminal
git checkout edit-file
```
```
  edit-file
Switched to branch 'edit-file'
```
ブランチ名をクリックしポップアップした中から移動先のブランチを選択すればよい
![checkout.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/9e0dee7a-7c31-3468-1261-0a0b3da18c9f.png)

# マージ
edit-fileブランチでファイルを修正しコミットした後masterブランチにマージする．
ターミナルではmasterブランチに移動した後以下のコマンドを実行
```:terminal
git merge edit-file
```
```
Updating e1c3610..24d49ef
Fast-forward
 sample.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
```
1. masterブランチに移動した後・・・をクリック
2. ポップアップからBranch→Merge Branchをクリック
3. ブランチ一覧が表示されるのでマージしたいブランチを選択
1
![merge.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/79bc69bf-d949-533f-2e58-761e6ffbef76.png)
2
![merge2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/4bc4aa66-3c14-a46e-fd4d-e5d65c03c033.png)
3
![merge3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/2258f995-4a2c-48e2-f619-1a9a8a18bf2a.png)

# 差分の確認
```:terminal
git diff
```

vscode上では変更点が緑で表示され，緑の部分をクリックすると差分が見れる
![diff.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/6345690f-9078-472b-c22e-aefc65f83f42.png)

# ログの確認
```:terminal
git log
```
vscodeではログの確認をする機能がデフォルトでは見つからなかった
なので拡張機能の**Git History**を入れることにした
するとソース管理内に時計マークが表示されるようになるのでそれをクリックすることでログが確認可能

![log.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/c5c915db-5223-d234-db24-e3b7740c85c4.png)
![log2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/f780322e-bcb0-7e47-210b-2d682afb5c47.png)
![log3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/931058/d3c51103-3efe-ca25-6d90-b0f6f8db748e.png)

# Conclusion
Vscodeで作業するときはターミナルを使用しないGUI操作がやり易いと感じた．
次回はGitHubとの連携をまとめようと思う．