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)

エラーが出てplink.exeが終了したので、exitコマンドでコマンドプロンプトを終了します。

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

コミットをリベース

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

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

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

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

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

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

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

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

git push -f

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

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

投稿者: isonishi

小規模ウェブサイトの制作を請け負うフリーランサーです。職種はフロントエンドエンジニアが近いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です