管理自托管回购和测试的分支

Managing Branches For Self Hosted Repo and Testing

我意识到这听起来不太清楚,但我自己仍然感到困惑。我正在阅读 Git 电子书,但不能 100% 确定我已经完全理解它。如果大家觉得有遗漏的信息,请告诉我,我会补充。


从前一周开始,我们现在已经设置了一个自托管 git 存储库和服务器。这个 repo 是 master 并且是当前在暂存环境中的内容。从这里开始,我们准备好后手动重新部署到生产环境。

现在(以及一直以来的情况),要进行更改,某人只需访问该文件并在其所在的服务器上进行所需的更改。已经有多个用户保存彼此的工作并且丢失了很多东西的实例。

我们想要做的:从这个 master 创建分支,让人们在上面编写代码,但如果分支可以本地存储在用户机器上,而不是存储在 master repo 所在的测试服务器上,那将是理想的。

测试代码:应该怎么做?是不是要把本地分支的修改后的文件推送到master那里试试?它实际上只是在服务器上创建多个分支,但在本地切换到这些分支吗?

代码不能独立于其他任何东西进行测试,因此无论如何都需要将其添加到 master/deployed 版本。

我的任务是为我们的环境设置 git,所以我希望尽可能轻松和直接。

Git 和版本控制一开始设置起来真的很混乱,所以我会尝试单独回答您问题中的具体要点:

"[..] to make changes, someone just access' the file and makes the needed changes on the server [...]"

您肯定希望停止将文件直接写入生产服务器上的磁盘。理想情况下,您要做的是通过像 Jenkins or TeamCity.

这样的持续集成服务器自动处理部署

"[...] if the branches could be stored locally on user machines, not on test server where master repo is [...]"

这就是 Git 和版本控制的重点。您可以将文件托管在 Git 存储库中,并让每个开发人员 克隆 存储库的本地副本 (git clone)。这允许他们处理自己独立的代码副本,同时偶尔 pullorigin 获取最新更改。当代码完成时,他们会 push 将他们的更改返回 origin

"What we are looking to do: Create branches from this master to let people write code on".

这里你问的是Git Flow。您应该创建一个名为 mastersingle 分支 develop,并在 feature 中创建 each 分支develop 的分支。完成单个功能后,应将其合并回 develop

应该连接 develop 分支(最好通过 CI)以部署到您的开发和测试环境中。只要有更改,您就需要将 develop 部署到开发服务器。

"For testing code: What would be the way to do it?"

"Code cannot be tested independently of anything else, so it will need to be added to master/deployed version in any case."

您想在 develop 上进行测试。当候选发布版中的所有功能(您最终希望部署到生产环境中的一组更改)都已完成时,您需要将 develop 分支部署到测试环境中。在这里你可以测试这个版本的develop,而其他开发者可以自由地将develop的更高版本推送到开发环境——测试环境不会得到更新。

对测试环境的测试满意后——当你想将代码部署到生产环境时,你可以最后合并developmaster(如果您正在处理适当的发布计划,最好使用 release 分支)。 master 然后连接到您的生产环境。


按照 Git 流程,您只会在代码经过彻底测试后将其部署到 master,因此未经测试的代码永远不会投入生产。