1. ホーム
  2. git

[解決済み] git rebase` を使って古いコミットメッセージを変更する

2022-04-20 08:22:44

質問

古いコミットメッセージを編集しようとしたところ、以下のようになりました。 ここで .

問題は、今、私が rebase -i HEAD~5 と表示されます。 interactive rebase already started .

そこで、次に試してみる。 git rebase --continue が、このようなエラーが発生しました。

error: Ref refs/heads/master is at 7c1645b447a8ea86ee143dd08400710c419b945b but expected c7577b53d05c91026b9906b6d29c1cf44117d6ba
fatal: Cannot lock the ref 'refs/heads/master'.

何かアイデアはありますか?

解決方法は?

と書かれています。

<ブロッククオート

保存してエディターを終了すると、そのリストの最後のコミットまで巻き戻され、次のようなメッセージとともにコマンドラインに落とされます。

$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with

という意味ではない。

再度入力 git rebase -i HEAD~3

を試してみてください。 ない タイピング git rebase -i HEAD~3 をクリックし、エディタを終了させれば、正常に動作するはずです。

(そうでなければ、あなたの特定の状況において git rebase -i --abort すべてをリセットして再試行できるようにする必要があるかもしれません)


として デイブ・フォークト がコメントで触れています。 git rebase --continue は、リベース処理の次のタスクに移動するためのものです。 最初のコミットを修正した後 .

また グレッグ・リンド で言及しています。 回答 その reword コマンド git rebase :

pick"をedit"に置き換えることで、以下のようになります。 git rebase を停止させ、ファイルやコミットメッセージを編集し、コミットを修正し、リベースを続行できるようにします。

あるコミットのコミットメッセージを編集したいだけなら、コマンド " を置き換えてください。 pick というコマンドに変更しました。 reword " からは Git1.6.6 (2010年1月) .

これは同じことをする ' edit を除いて、対話的なリベースの間に行います。 シェルに制御を戻さずにコミットメッセージを編集することができます。 . これは非常に便利です。

現在、コミットメッセージをきれいにしたい場合は、そうしなければなりません。

$ git rebase -i next

次に、すべてのコミットを「編集」に設定します。 そして、それぞれについて

# Change the message in your editor.
$ git commit --amend
$ git rebase --continue

を使用して、' reword の代わりに ' edit をスキップすることができます。 git-commitgit-rebase コール .