【问题标题】:What is the point of triggering CI/CD with an empty git commit?用空的 git commit 触发 CI/CD 有什么意义?
【发布时间】:2021-07-19 11:50:57
【问题描述】:

我读过一些帖子(例如,123),这些帖子建议通过推送一个空的 git 提交来触发 CI 构建过程。

我不明白这是一个好主意,因为提交历史将充满无意义的条目,并且如果不重新编写哈希就无法删除它们(例如,git rebase --interactiveanything from this list),因此任何清理都需要强制推送(如果其他人也在该分支上工作,则应避免这样做)。

例如,

BEFORE REBASE:

* c074c70 (HEAD -> master) yet another major item
* bd8e835 trigger CI
* 49ddd75 trigger CI
* f895e9f this is important
* a7da744 trigger CI
* cec6a60 trigger CI
* 96e84f7 init

$ git rebase --interactive 96e84f7

AFTER DROPPING ALL EMPTY COMMITS:

* e441b17 (HEAD -> master) yet another major item
* fc67d54 this is important
* 96e84f7 init

THE ONLY COMMIT THAT RETAINED IT'S ORIGINAL HASH IS "init".

【问题讨论】:

  • 依赖于 VCS 的空提交来触发 CI/CD 的工作流是对 VCS 的滥用。这根本没有意义。后者有很多更好的选择(例如,侦听某些消息的聊天机器人)。你应该重新考虑你的设置。
  • 我同意。你是在想这件事,而不是想得太多。从更大的角度来看:为什么您会处于将空提交直接推送到 main 的情况,或者实际上是直接编辑 main 的情况?
  • 我问这个是因为我对这个话题知之甚少,但你们的 cmets 确实把事情放在了正确的位置,谢谢!另外,为了澄清,否决票是对概述的想法的反映,而不是因为问题质量低和/或不属于这个论坛,对吧?
  • 我认为反对票可能是正确的。这似乎完全基于意见。因为这是“为什么这种做法是个坏主意”。这通常会吸引低质量的答案。虽然很容易看到它因为不好的做法而被否决(用户不是完美的版主)。
  • @toraritte 这是一个很好的观点。重要的是只在不会干扰其他人的情况下使用 rebase。

标签: git


【解决方案1】:

根据 cmets,这不是一个好的一般做法,我相信上述帖子的重点是

  • 可以做到(但可能不应该)
  • 这可用于测试 CI/CD 构建服务/系统,而无需添加人为的更改。

似乎一个好的一般规则是将空提交仅推送到个人工作分支,并在拉取请求和/或合并到master/main之前将其删除。


线程 Pushing empty commits to remote 提出的问题(见下文)可以回答同样的问题,但在该线程中完全被忽略了。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2018-03-27
  • 2011-02-14
  • 2021-02-24
  • 2022-06-17
  • 2011-07-07
相关资源
最近更新 更多