1. ホーム
  2. git

[解決済み] git の最初のコミットメッセージはどのように書き直せばよいですか?

2022-06-23 04:28:14

質問

3つのコミットを含む作業ツリーを持っています。

➜ ~myproject git:(master) git log

commit a99cce8240495de29254b5df8745e41815db5a75
Author: My Name <[email protected]>
Date:   Thu Aug 16 00:59:05 2012 +0200

    .gitignore edits

commit 5bccda674c7ca51e849741290530a0d48efd69e8
Author: My Name <[email protected]>
Date:   Mon Aug 13 01:36:39 2012 +0200

    Create .gitignore file

commit 6707a66191c84ec6fbf148f8f1c3e8ac83453ae3
Author: My Name <[email protected]>
Date:   Mon Aug 13 01:13:05 2012 +0200

    Initial commit (with a misleading message)

今度は reword のコミットメッセージは 最初のコミット (6707a66)

➜ ~myproject git:(master) git rebase -i 6707

(...vimに入る)

pick 5bccda6 Create .gitignore file
pick a99cce8 .gitignore edits

# Rebase 6707a66..a99cce8 onto 6707a66
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

この場合、修正したいのは、( reword というコミットメッセージを修正したいのです。

初期コミット(誤解を招くようなメッセージを含む)

...適切なものに

当然のことながら、上記の試みは成功しませんでした。なぜなら最初のコミットには明らかに コミットを持たないからです。(そして、あなたが rebase の場合、次に古いコミットを参照する必要があります。 より前の を参照する必要があります。 reword ということですね?)

私の質問の要点は、このように、他の手段でこれを実現することができるのか、ということです。

どのように解決するのですか?

次のことを行ってください。 git rebase -i --root

(ポイント root を指定します)

この方法では、最初のコミットも含まれるため、単に reword を実行することができます。

--root オプションは、Git で導入された v1.7.12 (2012). それ以前は、唯一の選択肢は filter-branch または --amend のどちらを使用するかは、一般的に難しくなります。

注意: 以下も参照してください。 この類似の質問と回答 .