よく使うGitコマンド
git commit
直前コミットのやり直し
git commit --amend
このコマンドを使うとコミットメッセージの編集画面がviなどで開くものの、行頭でシャープ記号など使うとコメントアウト扱いになって認識されず、個人的には使い勝手が悪いためよく使用するのは以下のパターン。
git commit --amend -m "#1234 修正1+修正2"
git reset
直前コミットの取り消し
git reset <option> HEAD~
または
git reset <option> HEAD^
git reset --soft HEAD~
git reset --hard HEAD~
--soft
:作業内容はそのまま維持してコミットだけ取り消し。
--hard
:コミットを取り消した上で作業内容もリセット。
~ (チルダ) は『n世代前のコミットを指定』の意味。
^ (キャレット) は『複数の親コミットからコミットを指定』の意味。
そのため『nコミット前』を意図するなら ~ (チルダ) に癖付けするのが吉。
(@gyokuto さん、ご指摘ありがとうございました!)
reset系は基本的にコミットログもろとも抹消されるので、チーム開発ですでにプッシュした後のブランチを対象にする場合は注意。(特別な理由がなければしない方がいい)
なおWindowsの場合は git reset --soft "HEAD~"
のように、 HEAD~
を "
で囲むらしい。
git push
強制プッシュ
git push -f <remote> <branch>
git push -f origin branchName
前述の git commit --amend
や git reset
などで歴史改竄したコミットを強制的にリモートへプッシュするときなどによく使用する。
ブランチ削除
Gitブランチを削除する (ローカル&リモート)
- ローカル:
git branch -d <branch>
- リモート:
git push <remote> --delete <branch>
今いるブランチは削除できないので、他のブランチにチェックアウト(移動)した後に実施。
git branch -d branchName
git push origin --delete branchName
プッシュやマージされていないローカルブランチはオプション -d
で削除できないため、オプション -D
を使用。
git branch -D branchName
git revert
コミットを戻す("戻した"という履歴を残しながら戻す)
別な表現で書くと、「取り消したいコミットを打ち消すような、コミットを新たに作る」。
git revert <commit>
「IDで指定したコミットを打ち消す」コミットが新しく追加されるため、元のコミットは維持され完全な歴史改竄とまではならない。
自分がよく使うのは以下。
マージしたコミットを戻す
git revert -m 1 <commit>
マージコミットを取り消す場合は、親コミットのどちらに戻すか数字で指定する。
git log コマンドなどで、マージコミットがどのコミットとどのコミットから生まれたかがわかるので、それを踏まえて1か2を指定。
(以下の例だと、コミットID 1231231
に戻したい場合は 1
、4564564
に戻したい場合は 2
。)
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (origin/feature/123456)
Merge: 1231231 4564564
Author: user.name <user.name@example.com>
Date: Thu Jun 1 09:40:36 2025 +0900
Merge remote-tracking branch 'origin/feature/456' into feature/123456
commit 4564564ee98f19316eb4d7eacd29a8ab9ccac1dd (origin/feature/456, feature/456)
Author: user.name <user.name@example.com>
Date: Thu Jun 1 06:36:49 2025 +0000
Add new file 456.txt
commit 1231231e4050b45b4010588c82e3ef3ba62a7efc (origin/feature/123, feature/123)
Author: user.name <user.name@example.com>
Date: Thu Jun 1 05:32:23 2025 +0900
Add new file 123.txt
commit 000000068f6eec77976b890f022591f4c8b760de (origin/main, origin/HEAD, main)
Author: user.name <user.name@example.com>
Date: Wed Jun 1 02:16:10 2025 +0000
Initial commit
git fetch
ブランチ一覧を同期
git fetch -p
オプション -p
は "prune" (取り除く) の意味。リモートに存在しないブランチはローカルからも削除される。
参考URL
git Book
git Reference | git reset
Git ブランチを削除する方法 (ローカル、リモート)
[Git]コミットの取り消し、打ち消し、上書き
【Gitコマンド】コミットメッセージ変更方法
【やっとわかった!】gitのHEAD^とHEAD~の違い
git reset の使い方と、主要オプション
【gitコマンド】いまさらのrevert