如果我们目前拥有开发和生产服务器,我们该如何开始使用git?

5
我正在公司推行更好的版本控制实践,但不确定如何在当前情况下使用git。我们有开发和生产服务器。更改直接在开发服务器上进行,经过测试和准备后,我们通过SFTP拖放将它们移动到生产服务器上。我想在这个过程中(使用GitHub)引入git,但不确定从哪里开始。我们的开发代码库与生产代码库非常不同,因为我们有10-15个正在进行的项目和不能或不应该立即推送的错误修复。我们该如何实现这一点,以便在不必先匹配开发和生产代码库的情况下开始使用git?

将每个正在进行的功能分别拆分到自己的分支中,这样做是否可行?所有分支都基于当前的生产代码库? - cdhowie
当你说改动是直接在开发服务器上进行的时候,你是指人们远程编辑源代码还是本地编辑后使用(s)ftp上传到开发服务器? - Daenyth
@Daenyth 很不幸,他们正在远程编辑开发服务器上的内容。我正在试图让我们达到本地完成开发,然后将代码推送到开发服务器进行测试的阶段。但首先必须从小步骤开始。 - Charles Zink
2个回答

5

分支/特性实验

首先,如果你有10-15个正在进行的项目,它们现在是如何相互合作的呢?

Git通过提供分支来解决这个问题。因此,每个实验将被单独分离在自己的分支上,并基于主分支或dev分支。这也有助于使它们更容易合并。

中央仓库

那么推荐的工作流程是什么呢?很简单,只需使用一个中央git仓库即可。

我建议以生产代码为基础构建中央git仓库,然后移植具有潜力的“实验”。或者让实验者在新分支上合并它们,然后帮助他们提交并推送分支。

然后,要更新生产环境,您需要从主分支拉取。要更新开发服务器,您需要从开发分支拉取。不再使用SFTP。功能分支实验可以根据需要切换到开发,甚至更好的是,可以仅在每个开发人员正在运行和测试的本地副本上使用。

本地主机开发

这与git无关,但似乎缺少了整个图片的一部分,因为你们一直依赖SFTP,而这并没有版本控制:一旦你有了一个版本控制系统,不再重要的是检出存储在哪里以及提交提交在哪里,只要它们被推送到中央仓库。现在,您可以在本地主机上运行网站的本地副本来运行实验。它将非常快速和可访问。在你实际拉取提交并更新它们之前,它不会破坏开发服务器或生产服务器,因此你可以非常自由和强大地进行实验,使用本地分支在本地机器上。假设您正在处理网站,则可以使用别名创建完全本地的副本到您的hosts文件中。所以我有一个完全本地的网站http://nw.local,它映射到一个包含git仓库的文件夹中。如果我想进行实验,我就会git branch experiment;git checkout experiment,然后开始编写代码并提交,如果我喜欢结果,我就会将提交变基或合并到dev分支并推送。然后我经常删除该分支,并启动一个新的分支,具有新的或类似的实验功能。


1
你已经有一个典型的场景并且一切都在掌控中。使用git,这变得更加简单。
首先,我建议您拥有一个中央git存储库。生产和开发服务器可以作为该中央git存储库的不同分支进行建立。现在,由于您总是使用生产分支部署生产代码,让我们将其称为中央仓库的master分支。
有了这个设置,让我们来到开发服务器。您首先创建另一个名为dev的分支,并以master分支为基础。它反映了您产品的最新稳定版本,并且在任何时间点上,dev分支应该是master+ 即将发布的功能。有了这个结构,您现在需要建立一个协议来测试和部署所有正在进行中的项目。
现在,假设员工X正在开发一个名为F的功能。X可以在本地创建一个名为branchFeatureF的新分支。这需要从origin/master分支创建,因为那是稳定版本。X在他的功能上工作了几天,感觉它已经准备好测试了。很好,现在将其推送到dev分支。这就像推送到master一样好,但由于您仍处于测试阶段,因此在dev分支上工作以在进入master之前进行测试。

所有QA都在开发分支上完成。在修复任何错误后,功能F现在已准备好发布,因此是时候将特性分支branchFeatureF合并到master中并部署您的代码了 - 太棒了。

现在主分支具有功能 F,因此在另一名员工 X' 在“dev”分支上测试另一个功能 F' 之前,您需要从最新的带有功能 F 的 “master” 拉取更改并进行测试。当然,如果这些功能彼此不冲突,F 和 F' 可以同时与 X 和 X' 一起在“dev”分支上进行开发,并测试各自的功能。
实质上,您通过要求同事们创建自己的功能分支并确保他们始终推送到“dev”分支,并且“dev”分支始终更新为最新的主分支,为所有同事提供了足够的自由来开发其功能。这确保不会浪费时间解决合并分支时出现的任何冲突。作为存储库维护者,您将负责将 QA 批准的功能分支合并到主分支并在生产环境中部署代码。请不要影响“master”分支。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接