Git:通过强制推动改变git log的历史被认为是不好的做法吗?

时间:2017-05-18 12:55:08

标签: git

我和老板争论过与Git合作的方式。

我编写了一个Jenkins管道,每隔5分钟轮询一次SCM,如果推送到相关分支,则触发构建。

为了测试它,我创建了一个名为itai_test的新分支,签出了它,创建了一个名为itai.txt的新文件,提交并推送。

测试进展顺利...... Jenkins对SCM进行了调查,发现了变化并触发了构建...正如预期的那样。

当我确定我对测试结果感到满意时,我已经运行git log,在我的测试提交之前找到了最后一次提交的SHA,恢复了该提交并推动了力变化为原点。

现在,当我告诉我的老板时,他很生气,并告诉我永远不要改变git的历史...这是没人做的事。

因此,举例来说,我问他对挤压的看法,他也说了同样的话......"这不是正确的工作方式"。

我认为这是一个方法问题,而不是一个正确或错误的事情,但我不像Git那样经验丰富。

那么请你分享一下你的方法吗?

1 个答案:

答案 0 :(得分:0)

想象一下这两个场景。为了明白这一点,它们可能是夸大其词。

  • 你的SW已经出去了。 Bug报告进来。您尝试重现问题但不能。然后你的一位同事说:“哦,我们在回购中的版本1.3可能与客户的版本不一样,因为我们事后改变了一些提交。客户拥有的SW为v1。 3可能与我们的回购中的v1.3不同。“ Whaaat?!?
  • 你的SW已经出去了。事实证明,软件中确实存在一些恶意软件;这是可以证明的。然而,当您查看源代码时,您没有发现包括恶意软件在内的提交的证据。看起来好像放入恶意软件的人已经删除了这些提交并隐藏了他们的踪迹。您显然没有代码的可追溯性/可审计性。

这些只是为什么通常的两个小例子,源代码最终有一个规范的最终存储库,而仅附加,你不能重写历史。

(这只是常识“回到当天”。对于DVCS这些天来,可能会有一些“宗教”的分歧,我认为我们不需要进入那个......其他不同意的人可以礼貌地陈述他们的案例。)

但是,如果这对贵公司来说很重要,那么不应该留给“你不应该这样做”的可选规则。它应该在git服务器端强制执行,因此根本不可能。