将空提交到远程

我已经将一个提交推到远程,但现在我意识到提交消息是不正确的。我想更改提交消息,但AFAIK这是不可能的。所以我决定用正确的信息创建空提交:

git commit --allow-empty

推送空提交有什么缺点/后果吗?我将来会因为这个空洞的承诺而面临什么问题吗?

306926 次浏览

推送空提交有什么缺点/后果吗?

除了极度困惑之外,有些人可能会对为什么在master上有一堆没有内容的提交感到困惑。

可以改变了你推到远程的提交,但是提交的sha1(基本上是id号)将永久地改变,这改变了源树——然后你必须做一个git push -f回到远程。

你不会面临任何可怕的后果,只是历史看起来有点混乱。

< em > < / em >可以通过做来改变提交消息

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

这将覆盖你的远程历史,这意味着如果有人在此期间拉了那个回购,这个人会对你非常生气…

如果你是唯一访问回购的人,就这么做。

只要您清楚地从空提交引用了另一个提交,就应该没问题。喜欢的东西:

Commit message errata for [commit sha1]


[new commit message]

正如其他人指出的那样,这通常比强制执行更正后的提交更可取。

推送提交,无论是否为空,都会触发最终的git钩子。这样做要么什么也做不了,要么会造成翻天覆地的后果。

这个呢?

 git commit --allow-empty-message -m ''

空提交的一种用法是强制在每当推送新提交时都会触发构建的环境中发生构建。

git commit --allow-empty -m "Trigger Build"

至于让人困惑的历史,我有一个建议,最终会让未来的考古学家的生活更轻松。

git commit --allow-empty -m "message for commit DEADBEF was wrong. Correct Msg: ..."

其中DEADBEF代表提交错误消息的提交哈希值(SHA)。

或者如果不允许/不允许空提交,可以创建一个文档

commitcomments / $ SHA.txt

添加/提交并推送。

顺便说一句:我忍不住要让git的历史经常令人困惑:)