All Articles

Git のコミットメッセージを修正

Git for Windows * SourceTree

Git のコミットメッセージを編集するためにリベースを行った際のメモ。

今までは Git for Windows私家版 Git For Windows のインストール手順を参考にインストールし、ローカルリポジトリだけで運用していました。

目次

リモートリポジトリにプッシュ

リベースにはリモートリポジトリが必要

コミットログを見ていたら修正したいコミットメッセージを発見。

→ 直前のコミットではないので git commit –amend コマンドで修正できずリベースが必要。

→ リベースを行うにはリモートリポジトリが必要。

非公開のリモートリポジトリを作成

バックアップとして運用するのも悪くはないかなと、非公開のリモートリポジトリを Bitbucket に作成し、ついでに運営元が提供している SourceTree もインストールしました。

レジストリに接続先のフィンガープリントを保存

SourceTree に SSH キーを登録し、リモートリポジトリにプッシュしてみましたが、アップロードしている気配がありません。

詳細な出力を表示 にチェックを付けてみるとメッセージが表示されていました。

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags XXXXXXXX master:master
Pushing to git@bitbucket.org:XXXXXXXX/XXXXXXXX.git

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.

プッシュをキャンセルして cannot pull Git remote repository from Sourcetree を参考に、コマンドプロンプトで bitbucket.org を引数に plink.exe を実行します。

"C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\plink.exe" bitbucket.org
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)

y と入力してレジストリに接続先のフィンガープリントを保存します。

login as:

その後ログインを求められますが、ログインする必要はないので適当に入力します。

FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)

エラーが出て接続が切れたので、exit コマンドでコマンドプロンプトを終了します。

これでプッシュが出来るようになりました。

コミットをリベース

コミットメッセージを編集

プッシュが完了したら SourceTree で Git のコミットログを修正する方法を参考にコミットメッセージを編集します。

SourceTree の リポジトリ メニューから インタラクティブなリベース… を選択しても編集画面にコミットの一覧が表示されないので、ログ タブのツリーから修正したいコミットの一つ前のコミットを右クリックしてコンテキストメニューを出し、XXXXXXX の子とインタラクティブなリベースを行う… を選択します。

表示されたコミットの一覧から修正したいコミットを Amend Commit? にチェックを付けずに選択状態にし、左下の メッセージを編集 ボタンをクリックすると編集ウィンドウが表示されるので、修正して OK をクリックします。

Message が修正されているのを確認し、右下の OK をクリックするとリベースが行われます。

ローカルリポジトリとリモートリポジトリの不整合

プッシュ済みのコミットをリベースするとローカルリポジトリとリモートリポジトリの不整合でプッシュが出来なくなるので強制的にローカルリポジトリに合わせます。

SourceTree の 操作 メニューから ターミナルで開く を選択するか、ツールバーの ターミナル をクリックしてターミナルを起動し、git push -f コマンドを実行します。

git push -f

強制的にプッシュが行われ、リモートリポジトリがローカルリポジトリと同一になります。

注:リモートリポジトリを他者と共有している場合は行わないこと。

Published Mar 12, 2016

ありふれた備忘録

いつか役立つかもしれないメモ

isonishi

小規模ウェブサイトの制作を請け負うフリーランサーです。