Help us understand the problem. What is going on with this article?

typoしてpushしてしまったコミットコメントを修正してpushしなおす方法

More than 3 years have passed since last update.

はじめに

チーム内の共有ブランチから自分の作業ブランチを切って作業していた際、
コミットコメントを打ち間違えてしまったのでコメントを修正します。
コミットの履歴の改変になるので作業は注意をしながら行います。
また、共有ブランチでは行わないようにしてください。

コミットをやり直す方法

使用するコマンド

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

mashandroom
会社外活動・コミュニティとして、ハッカソンや各種イベントのボランティアなどに参加。ただただ自分たちが楽しみ、結果周りの人が喜んでくれるようなアウトプットを目指しています。創造せよ!頭にキノコが生えるまで
https://mashandroom.org
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした