【Git】結構使うけどいつも調べるGitコマンドまとめ

## はじめに

便利だけど使うときにいつも調べて使っているコマンドをまとめました。

〇〇したいときどうするんだっけ・・？
って調べているのでこの記事を書いているときも
たぶん全部を網羅できていません。笑

比較的しようするコマンドだったり便利だなって思うコマンドだったりは
カスタムコマンド（**alias**）登録したほうが簡単に扱えて良いと思います。

**alias** の登録の仕方は[こちら](https://qiita.com/suzu12/items/57978252d779ece1a9c5)の記事で紹介しています。
（前に書いた記事なので今回の含め少しずつ更新していきます。）

https://qiita.com/suzu12/items/57978252d779ece1a9c5

## 対象読者

- 最近Gitを使い始めた方(こんなのもあるんだって知ってると便利)
- Git操作に慣れてきた方
- 自分と同じように毎回いちいち調べてコマンドを叩いている方(意味の再確認ができて悪いことばかりではないけど)

## 目次

- はじめに

- 対象読者

- 目次

- コマンド

    - git commit --amend
    
    - git commit --amend --no-edit

    - git checkout -b <ブランチ名（local）> origin/<ブランチ名（remote）>

    - git reset

    - git stash

    - git log
    
    - git blame

    - git diff

- おわりに

- 参考文献

## コマンド

### git commit --amend

- コミットメッセージ変えたいときに使うコマンド。
- やっぱこっちのほうが伝わりやすいなとかタイポしたときに使用する。

```sh
git commit --amend -m "修正メッセージ"
```

### git commit --amend --no-edit

- 直前の　commit に変更点を含めたい時に使うコマンド。
- commit したあとにこの箇所も直前の commit に入れておけばよかったと思ったとき。
- commit 漏れをしたとき。

```sh
git add . # ステージング
git commit --amend --no-edit　 # 直前の commit に含める
```

### git checkout -b <ブランチ名（local）> origin/<ブランチ名（remote）>

- `git checkout -b　Branch(local)` の応用。

- **remote** にあるブランチを **local** ブランチの作成と同時にすることができる。

下記のように使用すると
**local**　に **Branch** という名前のブランチを作成し
**remote**　にある　**Branch**　という名前のブランチに **チェックアウト** することができる。

```sh
git checkout -b Branch origin/Branch
```

### git reset

- やらかしたときに使用する。
- もとの状態に戻す。

直前のpull　をなくしたいときとかに使用する

```sh
git reset --hard HEAD^
```

- HEADの位置を指定してもとに戻す。

```sh
# HEADの位置を確認
# 1番から最新のHEADでHEAD@{1}などと表示される
git reflog

# HEAD@{1}がついている位置までもどる
git reset --hard HEAD@{1}
```

- 直前のcommitをstaging（index）に戻したい時

```sh
git reset --soft HEAD~
```

### git stash 

- 変更点を一時的に退避させたいときに使用する

```sh
# 変更点をステージに移動
git add -A

# ステージにある変更点を退避させる
git stash save

# 直近のstashした変更点を復活させる
git stash pop
```

### git log

- **commit** 単位でどのような変更(**diff**)を確認することができる。

下記の例は直近の2件のdiffを見ることができます。

```sh
git log -p　-2
```

### git blame

誰が最後にコードを修正したかわかるコマンド。

チーム開発をしている場合などに有効だと思います。

```
git blame [ファイル名]
```

https://www.r-staffing.co.jp/engineer/entry/20200626_1

### git diff

- 変更点を確認したいときにみるコマンド

以下の例は add した(ステージにある)変更点を見たい時。

```sh
git diff --cached
```

## おまけ

aliasに登録しました。

登録の仕方はこちらを参考にしていただけたら幸いです。

```config
alias gcam='git commit --amend -m'
alias gss='git stash save'
alias gsp='git stash pop'
alias logp='git log -p'
alias diffc='git diff --cached'

# 今回紹介していませんが便利なコマンド。以前紹介した記事があるので参考文献に載せます。
alias gap='git add -p'
```

- 反映させる

```sh
source ~/.bash_profile
```

https://qiita.com/suzu12/items/00a91591a36436e71a89



## おわりに

これ以外にもたくさん知っていると便利コマンドはあると思います。

そのたびに調べて使用するということでもいいですが、
**alias** に登録したり記事などでまとめておくと使いたい時すぐに引き出せるようになります。
（記事に書くことで意味をしっかり覚えたり、なんとなく記憶に残るようになる効果もあると思ったりしながら書いています。）

Gitコマンドは日常的に使用するコマンドなので
意味を正確に理解し使用していきます。


##　参考文献

- [【Git・Docker】alias の登録方法](https://qiita.com/suzu12/items/57978252d779ece1a9c5)
- [【Git】commitの粒度を小さくしよう](https://qiita.com/suzu12/items/00a91591a36436e71a89)
- [コミットメッセージの変更](https://docs.github.com/ja/github/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message)
- [Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみた](https://www.granfairs.com/blog/staff/git-commit-fix)
- [2.3 Git の基本 - コミット履歴の閲覧](https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E5%B1%A5%E6%AD%B4%E3%81%AE%E9%96%B2%E8%A6%A7)
- [【Git】リモートブランチをチェックアウトしたいときは「git fetch origin <ブランチ名>」と「git checkout <ブランチ名>」を実行すれば良い](https://dev.classmethod.jp/articles/how-to-checkout-remote-branch/)
- [困ったときの git reset コマンド集](https://qiita.com/ChaaaBooo/items/459d5417ff4cf815abce)
- [git reset –hard を取り消す、git reflog の使い方](https://www-creators.com/archives/2025)
- [Git commit 取り消したい](https://qiita.com/maejimayuto/items/30bfab250186a00ae884)
- [【git stash】コミットはせずに変更を退避したいとき](https://qiita.com/chihiro/items/f373873d5c2dfbd03250)
- [git commit --amendでaddし忘れたファイルを救済する](https://qiita.com/piruty/items/402b5bf83479f7e3480a)
- [git blame](https://www.atlassian.com/ja/git/tutorials/inspecting-a-repository/git-blame)
- [第13話 どのコミットでバグが入ったかgit blameで調べてみよう【連載】マンガでわかるGit ～コマンド編～](https://www.r-staffing.co.jp/engineer/entry/20200626_1)