【发布时间】:2021-07-19 11:50:57
【问题描述】:
我读过一些帖子(例如,1、2、3),这些帖子建议通过推送一个空的 git 提交来触发 CI 构建过程。
我不明白这是一个好主意,因为提交历史将充满无意义的条目,并且如果不重新编写哈希就无法删除它们(例如,git rebase --interactive、anything 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