Gitを基本からまとめてみた【随時更新】

## Gitとは
コードの変更履歴を記録するためのもの

## Gitの出来ること
##### ① ファイルのバージョン管理
任意のタイミングでファイルの状態を記録できる。
##### ② 以前の状態に戻せる
前のバージョンにすぐ戻せる。
##### ③ チームでスムーズに開発できる
複数人の共同開発での思わぬ事故を防止できる。

## Git基本コマンド
#### 基本操作の流れ

`ローカル：テキスト`
　⬇️　　　　⬆️
　『反映』『記録』　
　⬇️　　　　⬆️
`データベース（リポジトリ:変更履歴を記録する場所）`
　⬇️　　　　⬆️
『取得』『GitHubへアップ』
　⬇️　　　　⬆️
`　G　i　t　H　u　b　`

#### ローカルの基本操作①初期化
`フォルダ`　
　⬇️
『init』
　⬇️
`フォルダ(リポジトリを作成)`

```Git:ローカルリポジトリの新規作成&nbsp;&nbsp; 
$ git init
```
#### ローカルの基本操作②記録
`ワークツリー（手元の作業環境）`　　
　⬇️
『add』
　⬇️
`ステージ（commitする為の事前置き場)`　
　⬇️
『commit』
　⬇️
`リポジトリ(変更履歴を記録する場所)`

```Git:変更内容を記録&nbsp;&nbsp; 
$ git add.　ファイル名指定。　  * "."は全変更ファイル
$ git commit -m "コミットメッセージ"　  * 変更内容を記載
```
#### ローカルの基本操作③状況確認

`リポジトリ`　　
　⬆️
『diff』
　⬇️
`ワークツリー`　　
　⬇️
『diff』（変更内容をチェック）
『status』（変更ファイルをチェック）
　⬇️
`ステージ`　

```Git:変更状況を確認&nbsp;&nbsp; 
$ git diff * リポジトリとワークツリーの差分をチェック
$ git diff -staged  * リポジトリとステージの差分をチェック
$ git status * 変更ファイルを確認
```
#### ローカルの基本操作④履歴の確認

`リポジトリ`　
・　変更３　
・　変更２　  log 変更履歴をチェック
・　変更１

```Git:変更履歴の確認&nbsp;&nbsp; 
$ git log
```
#### ローカルの基本操作⑤元に戻す

`リポジトリ`　　
　⬇️ 　　　⬆️
『変更』『restore』
　⬇️　　　⬆️
`ワークツリー`　　
　⬇️　　　⬆️
『add』『restore』
　⬇️　　　⬆️
`ステージ`　

```Git:変更状況を確認&nbsp;&nbsp; 
$ git restore <ファイル名> * ワークツリーの変更を取り消す
$ git restore -staged * ステージ上げた変更をワークツリーに戻す
```

##チーム開発の流れ
` ロ ー カ ル `　⬅️ I.『branch』
　　⬇️　　　　⬆️
II.『push』『pull』　
　　⬇️  　　　　⬆️
`G i t H u b `    ⬅️  III.『pull　request』
　⬇️　　　⬆️
`　ロ　ー　カ　　ル　`


#### I. ブランチ①作成する
```
$ git branch <ブランチ名>
```
#### I. ブランチ②一覧を表示
``` 
$ git branch
$ git branch -a 　　　* GitHubのブランチを表示
```
#### I. ブランチ③切り替える
```
$ git switch <ブランチ名>
$ git switch -c <ブランチ名> * ブランチを新規作成して切り替える
```
#### I. ブランチ④変更をマージ
```
$ git merge <ブランチ名>
$ git merge <リモート名>/<ブランチ名>
```
### II. GitHubとの通信①初期設定
#### 1.GitHubの登録
#### 2.Gitの初期設定

#### 2. Gitの初期設定①バージョン確認
```
$ git --version
git version 2.13.6 (Apple Git-96)
```
#### 2. Gitの初期設定②設定確認
```
$ git config -l  * ローカルの設定
$ git config --global -l  * グローバルの設定
```
#### 2. Gitの初期設定③ユーザー名、メールアドレスの設定
```
$ git config --global user.name "ユーザー名"
$ git config --global user.email "メールアドレス"
```
#### II. GitHubとの通信①初期設定

・　GitHub上でリポジトリを作成

#### II. GitHubとの通信②リーモートリポジトリの追加

`ローカル`
　⬆️
『remote add origin URL』  　originという名前でリポジトリURLにアクセスできる
　⬆️
`GitHub`

```
$ git remote add origin　URL
　　　　　　　　(リモート名）(リモートURL）
```
####II. GitHubとの通信③リモートリポジトリにプシュ

`ローカル`
　⬇️『commit』
`リポジトリ(変更履歴を記録する場所)`
　⬇️『push』
`GitHub`

```
$ git remote add origin　main
　　　　　　　　(リモート名）(ブランチ名）
```

#### II. GitHubとの通信④リモートリポジトリから情報を取得

`ローカル`
　⬇️『commit』⬆️『pull』
`リポジトリ(変更履歴を記録する場所)`
　⬇️　　　　　⬆️
`GitHub`

```
$ git pull add origin　main
　　　　　　　　(リモート名）(ブランチ名）
$ git pull * 省略可能
```

#### II. GitHubとの通信⑤リモートリポジトリから情報を取得

`ローカル`
　⬇️『commit』
`リポジトリ(変更履歴を記録する場所)`
　⬇️　　　　　⬆️『fetch』
`GitHub`

```
$ git fetch origin
　　　　　　　　(リモート名）
```

#### II. GitHubとの通信⑥プルとフェッチ

`ローカル`
　⬇️『commit』⬆️『merge』       
`リポジトリ(変更履歴を記録する場所)`⬆️『pull』
　⬇️　　　　　⬆️『fetch          
`GitHub`

#### III.プルリクエスト①プルリクエストの手順

`ローカル`　①mainを最新に更新　②ブランチ作成　③ファイル修正・コミット
　⬇️　⬆️
　⬇️　⬆️
`GitHub`　④プッシュ⑤プルリクエスト⑥コードレビュー⑦マージ



## 参考サイト
[エンジニアの必須スキルGitで出来ること3選【Git入門講座#1】](https://www.youtube.com/watch?v=dzcBRwP-6rM)
[もう怖くないGIT！ チーム開発で必要なGitを完全マスター](https://www.udemy.com/course/unscared_git/learn/lecture/6680054?start=0#overview)
[Gitの基本コマンドまとめ【Git入門講座#3】](https://www.youtube.com/watch?v=f4BRgGAXyek)
[Mac Git 初期設定](https://qiita.com/ucan-lab/items/aadbedcacbc2ac86a2b3)
[今さら聞けないGitHubとは？超基本のGitから使い方まで徹底解説](https://qeee.jp/magazine/articles/16022)