前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >版本控制简介

版本控制简介

作者头像
Zeng
发布2018-09-10 13:17:36
1.8K0
发布2018-09-10 13:17:36

在“ 托管网站”指南中,您了解了如何通过安装和配置Web服务器,数据库和PHP来托管您的网站。现在是时候用版本控制来保护您的数据并顺利处理代码更新。当您学习完本指南后,您将了解如何使用大型组织也在用的多种版本控制方法和工具。

入门

一个版本控制系统是存储和管理您的文件和代码的修改的一个特殊应用。许多开发人员和组织使用版本控制来协作处理源代码,管理发布,并在发现错误时回滚到以前的版本。

版本控制概述。
版本控制概述。

设置版本控制系统很容易。困难的部分是学习使用它,然后将其纳入您的日常工作流程。本节介绍版本控制,并说明如何将其应用于您自己的项目。我们将引导您完成所有步骤,从评估不同的版本控制系统到创建和使用一个仓库。

为何使用版本控制?

如果您在Linode云平台上托管一个网站或一个基于Web的应用程序,则您的用户将依赖您的内容,这些内容必须是可获取的。您还需要更新和修补内容。但是,更改内容可能会导致无法预料的错误,从而导致停机。在更改过程中,您需要一种方法来保护您的代码和文件,在更新生效之前测试更新,并在出现问题时回滚到之前的工作版本。

版本控制(也称为修订控制源代码控制)是一个文件存储系统,它会追踪对文件所做的每个更改,并允许您撤销或回滚这些更改。例如,如果您正在自己的个人计算机上编辑文件并决定删除一段代码,则可以使用版本控制在将来恢复该部分代码 - 即使是从现在开始的几周或几个月以后。

版本控制的基本形式。
版本控制的基本形式。

对于需要同时处理相同文件的个体们,版本控制也是一个很好的工具。通过版本控制,他们可以检出仓库,然后在完成后提交更改。如果两个人修改了相同的文件,版本控制系统通常可以合并更改,除非存在冲突,在这种情况下,用户需要手动合并更改或保留一个更改而放弃另一个。

版本控制还可以轻松跟踪更改。您可以看到谁提交了代码,以及为什么。如果您在网站或应用程序的新版本上工作,则可以将代码副本分支到单独的区域。(该分支上做的修改稍后可以整合到主干代码。)简而言之,版本控制是针对人为错误和不可预见的灾难的廉价保险。你值得拥有!

评估版本控制系统

有几种类型的开源版本控制系统可用。每个系统都有自己的优点和缺点,所以在做出选择之前,你应该做一些研究。以下是三个最受欢迎的:

  • Git:由Linus Torvalds为Linux内核开发设计和开发,Git为非线性和分布式开发提供强大支持。它可能是最流行的分布式版本控制和源代码管理系统。有关更多信息,请参阅Git文档网站。您还可以阅读我们的Git源代码管理指南。
  • Subversion:当它出现在2000年时,Subversion就像CVS(版本控制系统)一样操作并添加了一些版本控制系统中缺少的功能。它是版权控制系统中无可争议的王者,直到2005年Git出现,它仍然非常受欢迎。它现在由Apache Software Foundation维护。您可以阅读我们的Subversion源代码管理指南。
  • Mercurial:这是另一种类似于Git的流行的版本控制系统。它不像Git那样受欢迎和社区支持,但它仍然是一个非常强大和易访问的系统。您可以阅读我们Mercurial分布式版本控制管理指南。

我们将在本指南中使用Git作为示例。但是不要让我们的决定影响你 - 还有很多其他的版本控制系统。如果Git,Subversion或Mercurial无法满足您自动化服务器构建和管理配置的需求,请随意调查其他选项。

版本控制工作流程示例

这是大多数开发人员创建,暂存和提交文件到一个Git仓库的流程。这可能与您当前使用的流程不同,但重要的是要学习Git的工作流程并至少尝试使用它,即使它最初看起来有点奇怪。以下是它的工作原理:

  • 在工作目录中创建或修改文件。对更改满意后,使用git add命令将修改后的文件移动到暂存区。
  • 新文件和已修改文件的快照将添加到暂存区。现在您可以预览文件了。
  • 当您准备好将文件提交到存储库时,请使用git commit命令。暂存区中的文件将永久存储在Git目录中。

下面显示了该过程的图示概述。

示例版本控制系统的图示。
示例版本控制系统的图示。

对于增加的保护层,你可以将你的文件同时存储在本地和远程的Git仓库。这对于需要在本地桌面计算机上修改文件后将其传输到服务器的开发人员来说非常理想。这样的设置超出了本指南的范围,但Git官网提供了一些有关此主题的优秀说明

安装Git

您可以在台式计算机,Linode云服务器或两者上安装Git。开始使用Git很容易。您所要做的就是在您的Linode云服务器上安装Git,创建一个仓库,并进行初始提交。就是这样:

  • 打开终端窗口并通过SSH登录您的Linode云服务器。
  • 输入以下命令在您的Linode云服务器上安装Git: sudo apt-get update sudo apt-get install git
  • 输入以下命令来设置用户名和电子邮件地址。用您自己的名称和邮箱地址替换示例名称和电子邮件地址。提交更改时Git会使用此信息。 git config --global user.name "Jane Smith" git config --global user.email jsmith@example.com
  • 现在您的Linode上安装了Git,您需要创建仓库。进入项目所在的目录,然后输入以下命令: git init
  • 仓库(一个.git子目录)已被创建,但尚未添加任何内容。要开始跟踪项目目录中的所有文件,请输入以下命令: git add *
  • 这些文件现在被追踪到了,因此您可以进行初始提交。输入以下命令: git commit -m 'initial project version'

恭喜!您已成功创建了一个Git存储库,指定了应跟踪哪些文件,并进行了初始提交。接下来让我们看一下版本控制工作流程,以了解如何在现实场景中使用Git。

环境

现在是时候使用您在版本控制和服务器构建方面所学到的知识来为代码创建不同的环境。环境是独立的沙箱,可以存储在不同的计算机或同一系统上。您可以创建单独的环境来存储处在不同开发和生产阶段的文件。在本节中,您将学习如何在开发环境中修改文件,预览暂存环境中的更改,然后将所有更改部署到生产环境。在面向公众的网站上实施变更和测试之前,这是一种有效的方法。

配置

首先,您需要确定要创建的环境,然后进行设置。我们建议创建三种不同的环境,这些环境应该适合大多数个人开发人员和小型组织。较大的公司可能会想要并需要其他几个环境,具体取决于已建立的团队和流程。理想情况下,您创建的环境应与您的工作流程相对应。例如,如果您的组织有专门的质量控制部门,您可能希望专门为该部门创建一个额外的环境。

示例部署配置的说明。
示例部署配置的说明。

我们建议您创建以下环境:

  • 开发:使用此环境创建新文件并修改现有文件。除了你之外没有人能看到变化,所以你可以在这里做任何你想做的事情。
  • 暂存:完成更改后,您将文件移动到此环境以预览私有区域中的更改。此时此类更改仍然对公众隐藏,但您可以测试该网站以确保您没有破坏任何内容。
  • 生产:如果更改看起来不错,您可以将修改后的文件推送到生产网站。现在所有的变化都是公众可见的。

考虑一下您希望每个环境的文件驻留的位置。例如,如果您是一名独自工作的开发人员,您可能希望将开发环境保留在您的个人台式计算机并将暂存和生产环境部署在Linode上。您也可以将所有环境保留在单个系统上。

理想情况下,您将使用版本控制系统为每个环境创建和维护单独的仓库。这样,您就可以发出命令将文件从一个环境的仓库推送到另一个环境的仓库。由于不同的环境将使用不同的数据,您还应该为每个环境创建不同的数据库。您可以将生产数据库中的数据复制到暂存和开发环境。

完善您的工作流程

与使用版本控制系统一样,需要花费一些时间和精力来适应环境。例如,如果您习惯于修改生产环境中的文件 - 这是一种绝对不推荐的危险做法 - 学习使用版本控制系统将修改后的文件从开发环境部署到您的登台和生产环境。坚持下去!回报是值得的。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 入门
    • 为何使用版本控制?
      • 评估版本控制系统
        • 版本控制工作流程示例
        • 安装Git
        • 环境
          • 配置
            • 完善您的工作流程
            • 更多信息
            相关产品与服务
            文件存储
            文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档