将空提交推送到远程


242

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

git commit --allow-empty

推送空提交是否有任何不利/后果?由于此空的提交,我将来可能会遇到任何问题吗?


Answers:


80

您将不会面临任何可怕的后果,只是历史看起来会令人困惑。

可以通过以下方式更改提交消息

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

但是这将覆盖您的远程历史记录,这意味着如果有人在此同时撤回该存储库,那么此人将对您非常生气。

如果您是唯一访问回购协议的人,那就去做吧。


5
是的,这就是为什么我更喜欢推动空提交
mrutyunjay

4
@mrutyunjay如果其他人有机会撤回该回购协议,那么是的,我认为这是一个更好的选择。
百利·彼得罗内拉

1
您将不会面临任何可怕的后果,只是历史看起来会令人困惑 -多么可怕的后果!;-)
Alois Mahdal

3
最好--force-with-lease避免丢失合作者的工作。
Kenzo

22

推送提交(无论是否为空)都会导致最终的git hook被触发。这可能无能为力,也可能会造成世界崩溃的后果。


9
这是一个被低估的观察。是的,空的提交可能比修改推送的提交要好,但是如果有适当的钩子,则不能认为它们没有副作用。
wintermute92 '16

18

推送空提交是否有任何不利/后果?

除了极端的困惑之外,还有人可能会理解为什么在主服务器上有一堆没有内容的提交,不是真的。

可以更改推送到远程的提交,但是提交的sha1(基本上是ID号)将永久更改,这将更改源树-然后,您必须git push -f返回到远程。


15

只要您清楚地引用了空提交中的另一个提交,就可以了。就像是:

Commit message errata for [commit sha1]

[new commit message]

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


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

2
尽管这段代码可以解决问题,但包括解释如何以及为什么解决该问题的说明,确实可以帮助提高您的帖子质量,并可能导致更多的投票。请记住,您将来会为读者回答问题,而不仅仅是现在问的人。请编辑您的答案以添加说明,并指出适用的限制和假设。来自评论
双响

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.