はじめに
チーム内の共有ブランチから自分の作業ブランチを切って作業していた際、
コミットコメントを打ち間違えてしまったのでコメントを修正します。
コミットの履歴の改変になるので作業は注意をしながら行います。
また、共有ブランチでは行わないようにしてください。
コミットをやり直す方法
使用するコマンド
git commit --amend
直前にしたコミットをやり直します。
前回のコミットにファイルの追加を行ったり、コミットコメントの変更を行ったりできます。
使用例
たとえば以下のようなコミットがあったとします。
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Author: xxxx <xxxx@xxxx.com>
Date: Wed Aug 26 12:57:24 2015 +0900
Added text1.txt
A sample/text1.txt
上記のコミットにtext2.txtを追加して、コミットを修正するには以下のようにします。
$ git add text2.txt
$ git commit --amend -m "Added text1.txt & text2.txt"
[sample-branch 7448937] Added text1.txt & text2.txt
2 files changed, 2 insertions(+)
create mode 100644 sample/text1.txt
create mode 100644 sample/text2.txt
すると下記のようにコミットが修正されていることがわかります。
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Author: xxxx <xxxx@xxxx.com>
Date: Wed Aug 26 13:00:53 2015 +0900
Added text1.txt & text2.txt
A sample/text1.txt
A sample/text2.txt
今回はコミット内容はそのままでコミットコメントのみ修正します。
git add
でファイルの追加はせずに git commit --amend
を行い、コメントの修正を行いました。
リモートリポジトリーに再pushする方法
ローカルでの編集が終わったのでリモートにpushしようとしましたが、ローカルのコミットを改変したためリモートとローカルに不整合が生じてしまいpushに失敗してしまいます。
これを解決するために強制的にローカルのブランチをリモートに上書きできるコマンドを実行します。
強制的に自分の変更をリモートに反映させるため操作を行う際は十分に注意します。
※共有のブランチでこの作業は絶対しないようにしてください。
使用するコマンド
git push -f [repository] [branch]
オプション -f
を付けることで強制的にpushできます。
使用例
$ git push -f origin xxxx
Counting objects: 1, done.
Writing objects: 100% (1/1), 183 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To xxxxxxxx
+ xxxxxxx...xxxxxxx xxxx -> xxxx (forced update)
これで今回の変更をリモートにも適用することができました。
参考サイト
【派閥別】Gitのコミットを間違えたときの対処法まとめ
[git reset (--hard/--soft)]ワーキングツリー - Qiita