TIM Labs

gitで最後に行ったコミットを修正する

| コメント(0) | トラックバック(0)

gitでは様々な方法でコミットログを書き換えることができます。 その一例として最後に行ったコミットを修正する方法を紹介します。

問題

先日紹介した gitで複数のコミットを1つにまとめる 例ですが、 実際には最後に行ったコミットだけを修正するケースの方が多いです。

例えば意気揚々と新機能を実装してコミットを行ったとしましょう:

$ git commit -am 'Addd new feature X'

ところが興奮のあまり「d」をタイプしすぎて「Add」が「Addd」になってしまいました。

しかもコミット後の状態を確認してみると:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       lib/x.c
#       lib/x.h
nothing added to commit but untracked files present (use "git add" to track)

上記の通り新たにバージョン管理下に置くべきファイルを追加し忘れているというありさまです。

この場合、ミスを修正するコミットを行って git rebase -i で1つにまとめてしまってもよいのですが、 さすがにこの程度のことで git rebase -i を使うのは面倒臭いです。 どうすればよいでしょうか。

解決方法

git commit --amend を使います。 --amend オプションを使うと最後に行ったコミットを書き換えることができます。

例えばコミットログの入力ミスを直すだけなら以下のコマンドでできます:

$ git commit --amend -m 'Add new feature X'

また、ファイルを追加し忘れた場合の修正なら以下のコマンドでできます:

$ git add lib/x.c lib/x.h
$ git commit --amend -m 'Add new feature X'

ところで git add 忘れのような修正の場合はコミットログはそのままの場合がほとんどです。 -m で毎回同じ値を指定するのは面倒ですし、-m を付けなければエディタが起動して面倒です。 このような場合は

$ git commit --amend -C HEAD

とすることで最後に行ったコミットのコミットログを使いまわすことができます。

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/119

コメントする

このブログ記事について

このページは、kanaが2011年2月10日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「Gmailでメーリングリストに投稿したはずのメールが受け取れない?」です。

次のブログ記事は「ドキュメント、書いてますか? @ Python Hack-a-thon 2011/02」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。