我已将一项提交推送到远程,但现在我意识到提交消息不正确。我想更改提交消息,但据我所知这是不可能的。所以我决定创建带有正确消息的空提交:
git commit --allow-empty
推送空提交有什么缺点/后果吗?由于这个空提交,我将来可能会遇到任何问题吗?
空提交的一种用途是强制在每当推送新提交时都会触发构建的环境中进行构建。
git commit --allow-empty -m "Trigger Build"
你不会面临任何可怕的后果,只是历史看起来有点令人困惑。
您可以通过执行以下操作来更改提交消息
git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)
但是这将覆盖你的远程历史记录,这意味着如果有人同时拉取该存储库,这个人会对你非常生气......
如果您是唯一访问该存储库的人,请执行此操作。
推送提交,无论是否为空,都会导致最终触发 git hooks。这要么毫无作用,要么产生毁灭性的后果。
推送空提交有什么缺点/后果吗?
除了极度困惑之外,有人可能会对为什么 master 上有一堆没有内容的提交感到困惑,但事实并非如此。
你可以更改你推送到远程的提交,但是提交的sha1(基本上是id号)将永久更改,这会改变源树——然后你必须做一个
git push -f
回到远程。
只要您清楚地从空提交中引用其他提交就应该没问题。比如:
Commit message errata for [commit sha1]
[new commit message]
正如其他人指出的那样,这通常比强制推送更正的提交更可取。
对于令人困惑的历史,我有一个最终让未来考古学家的生活变得更轻松的建议。
git commit --allow-empty -m "message for commit DEADBEF was wrong. Correct Msg: ..."
其中 DEADBEF 代表带有错误消息的提交的提交哈希 (SHA)。
或者,如果不可能/允许空提交,则可以创建一个文档
commitcomments/$SHA.txt
添加/提交并推送它。
顺便说一句:无论如何,我都忍不住要透露 git 历史常常令人困惑:)
这个怎么样;
git commit --allow-empty-message -m ''