将空提交推送到远程

mru*_*jay 212 git git-commit

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

git commit --allow-empty
Run Code Online (Sandbox Code Playgroud)

推送空提交有什么缺点/后果吗?由于这个空提交,我将来可能遇到任何问题吗?

sar*_*t07 323

 $ git commit --allow-empty -m "Trigger Build"
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以解决问题,但[包括解释](//meta.stackexchange.com/q/114762) 如何以及为何解决问题确实有助于提高帖子的质量,并可能会带来更多结果赞成票。请记住,您是在为将来的读者回答问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。[来自评论](/review/low-quality-posts/26120160) (16认同)
  • `-m` - 提交消息。https://git-scm.com/docs/git-commit (4认同)
  • @double-beep 代码可以说是足够自我记录的,但我添加了一个解释性句子。 (3认同)
  • 请注意,如果您的 git 索引未指向 HEAD(即您“添加”了文件),那么这些文件将被提交。您可能需要先执行“git reset”来清理索引。请注意,“git reset”不会更改工作树的内容,因此您不会丢失工作更改。 (2认同)
  • 这并没有回答OP关于空提交的缺点/后果和长期影响的问题。 (2认同)

Gab*_*lla 74

你不会面临任何可怕的后果,只是历史会让人感到困惑.

可以通过执行更改提交消息

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

但是这将覆盖你的远程历史记录,这意味着如果有人在同一时间拉回了那个回购,这个人会对你很生气......

如果您是唯一访问回购的人,请这样做.

  • 是的,这就是为什么我更喜欢推动空提交 (5认同)
  • @mrutyunjay如果其他人有机会撤回回购,那么是的,我认为这是一个更好的选择. (4认同)
  • *你不会面临任何可怕的后果,只是历史看起来有点混乱*——多么可怕的后果!;-) (3认同)
  • 最好使用“ --force-with-lease”,以免失去合作者的工作。 (3认同)

xor*_*xor 18

推送提交,无论是否为空,都会导致触发最终的git钩子.这可以做任何事情或者造成破坏性的后果.

  • 这是一个被低估的观察.是的,空提交可能优于修改推送提交,但如果可能存在挂钩,则不能认为它们是无副作用的. (7认同)

yam*_*tes 17

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

除了极端困惑之外,有人可能会知道为什么有一堆提交,而且没有内容在主人身上,而不是真的.

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


153*_*957 14

只要你清楚地引用空提交中的其他提交就应该没问题.就像是:

Commit message errata for [commit sha1]

[new commit message]
Run Code Online (Sandbox Code Playgroud)

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