【发布时间】:2013-12-06 23:11:12
【问题描述】:
我已将一个提交推送到远程,但现在我意识到提交消息不正确。我想更改提交消息,但 AFAIK 这是不可能的。所以我决定用正确的信息创建空提交:
git commit --allow-empty
推送空提交有什么缺点/后果吗?由于这个空提交,我将来可能会遇到什么问题吗??
【问题讨论】:
标签: git git-commit
我已将一个提交推送到远程,但现在我意识到提交消息不正确。我想更改提交消息,但 AFAIK 这是不可能的。所以我决定用正确的信息创建空提交:
git commit --allow-empty
推送空提交有什么缺点/后果吗?由于这个空提交,我将来可能会遇到什么问题吗??
【问题讨论】:
标签: git git-commit
git commit --allow-empty -m "Trigger Build"
【讨论】:
-m - 提交消息。 git-scm.com/docs/git-commit
git reset 来清理索引。请注意,git reset 不会更改工作树的内容,因此您不会丢失工作更改。
你不会面临任何可怕的后果,只是历史看起来有点混乱。
您可以更改提交消息
git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)
但是这将用你的远程历史记录覆盖,这意味着如果有人在此期间提取了那个 repo,这个人会很生你的气...
如果您是唯一访问该存储库的人,请执行此操作。
【讨论】:
--force-with-lease 以避免丢失合作者的工作。
yours 总是可以打破良好的友谊。
推送提交,无论是否为空,都会导致最终的 git 钩子被触发。这既不能做任何事情,也不能产生惊天动地的后果。
【讨论】:
推送空提交有什么缺点/后果吗?
除了极度困惑之外,有些人可能会理解为什么 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)。
或者,如果不可能/允许空提交,则可以创建一个文档
commitcmets/$SHA.txt
添加/提交并推送它。
顺便说一句:无论如何,不能拒绝让 git 历史经常令人困惑:)
【讨论】:
这个呢;
git commit --allow-empty-message -m ''
【讨论】: