SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Git中級者への第一歩

Git中級者への第1歩! レビュー品質向上の秘訣、コミットに便利なコマンドを紹介

Git中級者への第1歩 第1回

「さっきのコミットメッセージを修正したい」ときに便利なcommit --amendを紹介

 コミットの単位に気をつけ始めると、「あ、ここにもタイポが残っていた。さっきのコミットと合わせたいな」「このコミットの順番をもっと先に持っていきたい」などということが発生します。その際に利用できるGitのコマンドを今回は2つ紹介します。

 1つ目はcommitコマンドのオプションである--amendの紹介です。このオプションを利用することで、直前のコミットを書き換えることができます。変更を追加したり、コミットメッセージを書き換えるといったことができます。例えば、以下のような場面で使えます。

例1:現在の変更を直前のコミットに統合する

 「タイポの修正を一個忘れていた、前のコミットと一緒にしたい」というような場合です。現在、残っていたタイポの修正(login.htmlの修正)を行なった状態です。

% git status
On branch main
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:   login.html

no changes added to commit (use "git add" and/or "git commit -a")

 現在のコミット履歴のログは以下のようになっています。

% git log --oneline
d5d5420 (HEAD -> main) 誤字修正
53d7178 ログの出力形式を規約に合わせた
62cc568 ログイン機能の追加

 誤字修正のコミットが直前に行われています。やりたいことはd5d5420 (HEAD -> main)誤字修正となっているコミットに現在の変更を合わせるということです。

 現在の変更をaddして、commitコマンドを --amendオプションをつけて実行します。

% git add .
% git commit --amend

 commit --amendを実行すると、コミットメッセージを書き換えられるエディタが開きます。必要があればここでコミットメッセージを書き換えます。

誤字修正
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# (以下省略)

 今回は既存のコミットメッセージの「誤字修正」で問題ないのでそのままエディタを閉じます。これでコミット完了です。

% git status
On branch main
nothing to commit, working tree clean
% git log --oneline
f6234e4 (HEAD -> main) 誤字修正
53d7178 ログの出力形式を規約に合わせた
62cc568 ログイン機能の追加

 commit --amend実行前のログと比べると、「誤字修正」というメッセージは変わっていませんが、コミットのハッシュ値が変わっていることがわかります。 以下、commit --amend実行前のログです。

d5d5420 (HEAD -> main) 誤字修正

 git show f6234e4コマンドを実行すると、f6234e4のコミットの変更点を確認できます。変更点に、元々コミットされていたタイポ修正と後から追加されたタイポ修正の両方が入っていることが確認できるはずです。

例2:直前のコミットメッセージを修正する

 コミットメッセージ自体をタイポしてしまった、ということもあるでしょう。こんな時も commit --amendを利用することで修正できます。現在、以下の git statu の結果の通り、コードへの変更は特にありません。

% git status
On branch fix-message
nothing to commit, working tree clean

 コミットのログを確認すると、直前のコミットのメッセージがタイポしています。 

% git log --oneline
4a16d83 (HEAD -> fix-message) ログメッセージをついあk

 現在の状態のまま、commit --amendを実行します。

% git commit --amend

 前回の例と同じように、コミットメッセージを書き換えられるエディタが開きます。ここでメッセージを書き換えて、保存します。以下、エディタが開いて書き換えが終わったところです。

ログメッセージを追加

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.

 保存してエディタを閉じれば修正完了です。

% git log --oneline
f90d1c9 (HEAD -> fix-message) ログメッセージを追加

 commit --amend実行前のログと比べると、メッセージとコミットのハッシュ値が変わっていることがわかります。以下、commit --amend実行前のログです。

4a16d83 (HEAD -> fix-message) ログメッセージをついあk

 このように、メッセージだけを書き換えることもできます。commit --amendはとても便利なコマンドです。使いこなせると作業スピードも上がるはずです。使ってみたことがない方はぜひ使ってみてください。

次のページ
コミットの順番を編集して、もっと見やすく! rebaseコマンドとは?

この記事は参考になりましたか?

Git中級者への第一歩連載記事一覧

もっと読む

この記事の著者

藤澤 千尋(フジサワ チヒロ)

 ソフトウェアエンジニアとして約10年働いており、最近は主にフロントエンド開発を担当しています。最近、筋トレを始めました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/18937 2024/03/04 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー