この記事では、GitのCommitの取り消し方法を紹介します。
関連記事
「ローカルのGitをGitHubでバージョン管理する方法|主なGitコマンド一覧付きガイド」については、こちらで記事にしています。
直前のコミットを「取り消してやり直す」方法
直前のコミットを取り消すが、変更内容はそのまま残すコマンド
- コミットだけ取り消す(ステージングされた状態に戻る)
- 変更内容は一切消えない
- すぐに「正しい作者」「正しいメッセージ」で再コミットできる
git reset --soft HEAD~1コマンド解説
・resetオプション(3種類)
| オプション | コミット取り消し | ステージ | 作業ツリー |
|---|---|---|---|
--soft | 戻す | 維持(そのまま) | 維持(そのまま) |
--mixed(デフォルト) | 戻す | 解除する | 維持 |
--hard | 戻す | 解除 | 削除(消える) |
・HEAD~N は「HEAD から N 個前のコミット」
| 記法 | 意味 | 指す位置 |
|---|---|---|
HEAD~0 | HEAD そのもの | 今のコミット |
HEAD~1 | 1 個前 | 一つ前のコミット |
HEAD~2 | 2 個前 | 二つ前のコミット |
HEAD~3 | 3 個前 | 三つ前のコミット |
オプション:設定変更
コミットの作者を変更したい場合の例
Git は コミット作者 = Git ローカル設定(user.name / user.email) を使います。
・今後のコミットの作者を変更したい場合(現在のリポジトリのみ 反映)
git config user.name "新しい名前"
git config user.email "新しいメールアドレス"・今後のコミットの作者を変更したい場合(全リポジトリ共通の場合)
git config --global user.name "新しい名前"
git config --global user.email "新しいメールアドレス"この設定の後に、後述のように再度コミットします。
参考:SourceTreeの場合の同様の設定箇所
設定>詳細
フルネーム、メールアドレスなどを指定できます。

関連記事:SourceTreeとは?
トラブルシューティング:メールアドレスを公開したくない場合の対処法
GitHub は 「公開されない noreply メールアドレス」 を自動で提供しています。
※ 全ユーザーに自動配布される専用メール
例:
12345678+username@users.noreply.github.comこの noreply メールを Git コミットに設定することができます。安全で公式に推奨される方法です。
- GitHub 上にも本物のアドレスは一切公開されない
- Git履歴に残るアドレスも匿名になる
- GitHub の “Contributions” も正常に反映
- Git の仕様にも完全準拠
GitHub で自分の noreply メールを確認する方法
- https://github.com/settings/emails
- 「Keep my email addresses private」を ON にする
- “noreply メールアドレス” が表示される

このメールアドレスを Git に設定することができます。
コミットを再実行
コミットコメントを変更する場合の例
変更されたすべてのファイルを一括ステージングする場合のコマンドの例
(既にステージング済みの場合は不要)
git add .コミットコメントを変更
git commit -m "新しいメッセージ"コミットするAuthor(作者)を変更する場合の例
*Git のグローバル設定(user.name / user.email)を変更せずに、このコミットだけ別の作者として記録したい場合に使うオプション
*Author(作者)と Committer(コミッター)は別の項目です。
git commit --author="新しい名前 <新しいメール>" -m "新しいメッセージ"実際にどう見えるか確認(log 出力例)
git log --pretty=full
・–pretty=full
Author(作者)と Committer(コミッター)をどちらも表示し、コミットメッセージもすべてフルで表示するログフォーマット
pager(less)を終了するには、次のコマンドを実行します。
q直前のコミットを「完全に消す」(変更も破棄)
注意:変更内容も消える。復元が難しい。
git reset --hard HEAD~1コミットメッセージ・作者だけ直す(内容はそのまま)
git commit --amend --author="新しい名前 <新しいメール>" -m "新しいメッセージ"関連記事
「ローカルのGitをGitHubでバージョン管理する方法|主なGitコマンド一覧付きガイド」については、こちらで記事にしています。
参考
- Git 公式 Reference
https://git-scm.com/docs - Git 公式
git logの pretty-format 説明
https://git-scm.com/docs/git-log#_pretty_formats - Github Setting your commit email address
https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address
コメント