個人開発でよく使うgitのコマンドチートシート

##  はじめに・・・
開発をする上で欠かせないのが"git"の存在。
現在は、GUIで操作できる非常に便利なツールが色々と存在しているためコマンドについては知らなくてもいいかなと思っていたんですが、twitterで現役開発者に聞いてみたところ

<b>「知っておいて損はない」「個人開発であればむしろコマンドの方が効率的」</b>

など、コメントを頂いたので教養として知っておこうと思いまとめることにしました。

今回は、「ドットインストール」で勉強させていただいたのでそちらで紹介されている基本的なコマンド一覧となってます。
プログラミングもそうですが、一度勉強しただけでは身に付かず何度も使うことでものにできるものだと思うのでこのチートシートが役に立つと思い作成しました。

これから、gitを使っていく方にも役にたてば幸いです。

※今回は、コマンドのみでgitの詳しい説明は省いてます。
※共同開発の方法も紹介がありましたが、今回は省いています。

## コマンド一覧

### ステージングエリアへファイルを追加

```console
$ git add 〇〇（ファイル名）

$ git add .
//全てのファイルをadd

```

<br>
### コミットする

```
$ git commit
	//コメントの入力画面へ移る

$ git commit -m "コメントを入れることができる"
	//コメントを１行しか入れない場合に便利
	//コメント入力画面に移ることなくcommitすることができる

$ git commit --amend
	//直前のコミットに上書きできる。
	//前回のコミットを修正したいときに便利
```
<br>
### コミットされたファイルの情報をみる

```
$ git log

	//commit 6d7d6bc7d8a52c8c02a216f90c94bc2207ce86a5 (HEAD -> master) →　コミットのID
	//Author: Yuta Hemmi <wpnssu@gmail.com>→　コミットした人
	//Date:   Mon Mar 22 08:15:19 2021 +0900→　コミットした日時
	//initial commit →　コミット時のコメント
```
<br>
### ログをコンパクトにみたい時

```
$ git log --oneline

// 6d7d6bc (HEAD -> master) nitial commit

```
<br>
### コミット情報に加え、どこがどのように変更されたかを詳細に確認する

```
$ git log -p

//commit 6d7d6bc7d8a52c8c02a216f90c94bc2207ce86a5 (HEAD -> master)
//Author: Yuta Hemmi <wpnssu@gmail.com>
//Date:   Mon Mar 22 08:15:19 2021 +0900

//    initial commit

//diff --git a/index.html b/index.html
//new file mode 100644
//index 0000000..a29bdeb
//--- /dev/null
//+++ b/index.html
//@@ -0,0 +1 @@
//+line1
```
<br>
### 「どのファイルが何箇所変わったか」
「どのファイルに変更加えたか」をコンパクトに確認する

```
$ git log --stat

commit 6d7d6bc7d8a52c8c02a216f90c94bc2207ce86a5 (HEAD -> master)
Author: Yuta Hemmi <wpnssu@gmail.com>
Date:   Mon Mar 22 08:15:19 2021 +0900

    nitial commit

 index.html | 1 +
 1 file changed, 1 insertion(+)
```
<br>
### ファイル状況の確認
・変更されたがgit操作がされていないファイル
・ステージングエリアになんのファイルがあるのか
などが確認できる。

```
$ git status

　　//On branch master
①　//Changes not staged for commit:
②　//  (use "git add <file>..." to update what will be committed)
③　//  (use "git restore <file>..." to discard changes in working directory)
　　//	modified:   index.html

①変更があったが、ステージングエリアにも上がってないし、コミットもされてないのがあるよ！
②ステージングエリアに移動するなら add コマンド使ってね
③ファイルを復旧させるなら restore コマンドを使ってね
　⇨　checkout でも同じことができる
```
<br>
### 変更された箇所の確認

・git diff　⇨　ステージングエリアにあげていないファイルの変更箇所の確認
・git diff  —cached　⇨　ステージングエリアにあるファイルの変更箇所の確認

```
$ git diff

//diff --git a/index.html b/index.html
//index a29bdeb..c0d0fb4 100644
//--- a/index.html
//+++ b/index.html
//@@ -1 +1,2 @@
// line1
//+line2

$ git diff --cached

//diff --git a/index.html b/index.html
//index a29bdeb..c0d0fb4 100644
//--- a/index.html
//+++ b/index.html
//@@ -1 +1,2 @@
// line1
//+line2
```
<br>
### ファイルの削除

gitで管理されているファイルは、gitコマンドで削除する必要がある

```
$ git rm
```
<br>
### 以前のコミットに状態を戻す

```
$ git reset --hard HEAD
//直前のコミットの状態に戻す

$ git reset --hard HEAD^
//２個前に戻す

$ git reset --hard 〇〇〇〇（IDの指定　最低７桁くらい）
//指定のコミットIDに戻す

$ git reset --hard ORIG_HEAD
//３個前のコミットに状態を戻したが、２個前を復活させたい場合
```
<br>
### ブランチの一覧をみる

```
$ git branch

//* master
//hogehoge

// →　*がついているのが現在のブランチ
```
<br>
### ブランチの作成

```
$ git branch 〇〇（ブランチ名）
```
<br>
### ブランチへ移動

```
$ git branch checkout 〇〇（移動したいブランチ名）
```
<br>
### ブランチの作成と移動を同時に行う

```
$ git branch checkout -b 〇〇（作成・移動したいブランチ名）
```
<br>
### ブランチの削除

```
$ git branch -d 〇〇（削除したいブランチ名の指定）
```
<br>
### マージする（marge）

```
$ git marge 〇〇

//マージされる側のブランチにいる状態で、マージするブランチを指定すること
//hoge ⇨　master　の場合は

//git branch
//  hoge
//* master

//の状態で、

$ git marge hoge
```
<br>
### 直前のコミットにタグを付ける

```
$ git tag 〇〇（付けたいタグの名前　 例： v1.0）
```
<br>
### 存在するタグを確認する

```
$ git tag

//v1.0
//v1.1
//v1.2
//v2.0
```
<br>
### タグのコミットの詳細を確認する

```
$ git show 〇〇（タグ名）

//Author: Namae Myouzi <meado@gmail.com>
//Date:   Sun Mar 28 10:05:32 2021 +0900

//    line 2 added

//diff --git a/index.html b/index.html
//index a29bdeb..c0d0fb4 100644
//--- a/index.html
//+++ b/index.html
//@@ -1 +1,2 @@
// line1
//+line2
```
<br>
### IDを指定してタグを付ける

```
$ git tag 〇〇（付けたいタグ名） 〇〇〇〇〇〇（タグを付けたいコミットID）
```
<br>
### タグの削除

```
$ git tag -d 〇〇（消したいタグ名）
```
<br>
### エイリアスを付ける

よく使うコマンドを自分の好きなコマンドに変更することができる
"checkout" など、よく使うが長いものを  "ck " など短いコマンドに変更できる

```
$ git config --global alias.〇〇（自分の好きなコマンド） 〇〇（変更したいコマンド）

//例：　checkoutコマンドを "ck" に変更する
$ git config --global alias.ck checkout

```
<br>
### 設定したエイリアスを確認する

```
$ git config -l
```
<br>
## 番外編

コンフリクトが起きてしまった場合の対処（コンソールで）
※異なるブランチで同じ箇所を変更してしまうこと

コンフリクトが起きている場合は以下のようなコメントが出る

```
$ git status

//On branch master
//You have unmerged paths.
//  (fix conflicts and run "git commit")
//  (use "git merge --abort" to abort the merge)

//Unmerged paths:
//  (use "git add <file>..." to mark resolution)
//	both modified:   index.html
```

コンフリクトが起きているファイルを開くと、異なる変更点が２つ残った状態で開かれる
⇨どちらか採用したい変更を残して、その他を全て削除する。

その後、コミットすることで解消することができる

## 最後に

まだまだ未完成のチート表だと思います。
他にも、「このコマンド便利だよ！」や「これは覚えておいた方がいいかも！」といったものがあれば是非教えてください。

ご紹介させていただいた上で、追記していきたいと思います。

最後まで、みていただきありがとうございました。