【发布时间】:2014-04-21 07:45:02
【问题描述】:
我对 Git 和服务器的第一次体验是当我们有一个服务器时,将代码放到它上面的唯一方法是推送到 Github,然后让服务器通过 webhook 进行拉取。我们最终得到了很多带有诸如“修复先前的提交 - 提交 #3”和“修复尝试的提交 #3 的修复”等消息的微小提交,因为我们无法知道我们的提交是否会在服务器上正常运行直到它们被提交并推送之后。
最近我将我的第一个 Rails 应用程序部署到 Heroku,虽然我在那里看到了很多积极的一面,但在我看来,这与我上面描述的情况非常相似。除非我们想设置我们自己的服务器来非常紧密地镜像 Heroku 服务器,以便我们可以在不提交到 Git 的情况下上传和测试代码,否则在我们的代码已经提交之前无法知道它是否工作,因此它可能需要许多小的、无用的(就 repo 的历史而言)“调整”提交以修补失败的提交。
我知道除了生产服务器之外,已经有plentyofquestions 解释了如何使用set up and use a staging server,但这仍然不能解决污染回购历史的问题。我知道可以修改提交、压缩、rebase 等,以便可以处理这些“无用”的提交(如this question 的答案中所述),但是有多个人可能会同时执行所有这些操作,我可以看到它变得丑陋并在 Git 中产生各种冲突。
TL;DR
我们如何在使用 Heroku 时为我们的项目维护一个“干净”的 Git 历史记录,这样我们就不会为了修复本来应该可以工作的东西而产生大量的提交或分支,从而造成混乱和噪音,但是不只是因为我们无法在服务器环境中测试它,直到提交和推送之后?
【问题讨论】:
-
你说你不能在本地测试。为什么?
-
不是我不能在本地测试,而是本地环境不太可能完全反映生产环境,因此可以推送在本地工作的提交并且不适用于生产服务器。
标签: git heroku version-control github