という状況になった時にどうすればいいか毎回ググるのが面倒なので、まとめてみます。
環境
Mac M4 Pro
Sequoia 15.3.1
$ git --version
git version 2.51.0
コミットメッセージの修正
直前のコミットメッセージを修正したい
まだpushしていない場合
amendでコミットし直す
git commit --amend -m "修正後のコミットメッセージ"
push済みの場合
amendでコミットし直し、force pushする
git commit --amend -m "修正後のコミットメッセージ"
git push -f origin <branch name>
もっと前のコミットメッセージを修正したい
まだpushしていない場合
-
直近
nコミットの一覧を表示するgit rebase -i HEAD~nvim画面で以下のようなリストが表示される
pick e499d89 Delete CNAME pick 0c39034 Better README pick f7fde4a Change the commit message but push the same commit. # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd # 以下略 -
変更したいコミットメッセージの前についている
pickをrewordに置換して、保存して閉じる(:wq)pick e499d89 Delete CNAME reword 0c39034 Better README pick f7fde4a Change the commit message but push the same commit. # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd # 以下略 -
rewordをつけたコミットファイルがvim画面で表示される。新しいコミットメッセージを入力し、保存して閉じる(
:wq)
push済みの場合
- 上記 まだpushしていない場合 に従ってコミットメッセージを修正する
- force pushする
git push -f origin <branch name>
コミット内容の追加
直前のコミット内容に追加したい
まだpushしていない場合
追加したい変更ファイルをaddし、amendでコミットする
git add <file name>
git commit -a --amend
# (vim画面でコミットファイルが表示される。そのまま保存して閉じる。:wq)
push済みの場合
- 上記 まだpushしていない場合 に従って追加したい変更ファイルをコミットする
- force pushする
git push -f origin <branch name>
もっと前のコミット内容に追加したい
まだpushしていない場合
-
修正物を一旦退避させる
git stash save -
直近
nコミットの一覧を表示するgit rebase -i HEAD~nvim画面で以下のようなリストが表示される
pick e499d89 Delete CNAME pick 0c39034 Better README pick f7fde4a Change the commit message but push the same commit. # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd # 以下略 -
追加したいコミットの前についている
pickをeditに置換して、保存して閉じる(:wq)pick e499d89 Delete CNAME edit 0c39034 Better README pick f7fde4a Change the commit message but push the same commit. # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd # 以下略 -
stashしておいた修正物を持ってくる
git stash pop -
amendでコミット
git commit -a --amend # (vim画面でコミットファイルが表示される。そのまま保存して閉じる。:wq) -
コミットを反映
git rebase --continue
push済みの場合
- 上記 まだpushしていない場合 に従って追加したい変更ファイルをコミットする
- force pushする
git push -f origin <branch name>
ちなみに:vim操作
ノーマルモードとインサートモードがある
開くとノーマルモードになっている
- インサートモードに入る:
i - ノーマルモードに戻る:
control+C - 文字を消す:ノーマルモードで消したい文字の上にカーソルを持ってきて、
xを押す - 文字を入力する:インサートモードで入力したい部分にカーソルを持ってきて入力
-
:wq:保存して閉じる -
:q!:保存せずに閉じる