版本控制(2)

学习目标

完成本单元后,您将能够:

  • 列出现代开发人员工具箱中的基本工具。
  • 解释Git和GitHub如何在SDLC中一起工作。
  • 描述GitHub在软件开发生态系统中的地位。

GitHub icon

Git和GitHub的区别

Git和GitHub共享一个名字和一个任务,但它们不是一回事。准确区分Git和GitHub之间的界限可能需要一些时间,没关系。你在前面的单元中被引入到每个单元中,但是我们来深入一点,以了解它们是如何一起工作的。

Git是版本控制应用程序

简而言之,Git是跟踪与项目变更相关的所有内容的应用程序。首先定义几个关键术语:

  • 存储库: 用于编译项目的源文件的集合。
  • 提交: 项目的快照,因为它存在于特定的时间点。您在创建项目时创建提交,以在添加和删除离散工作单元时指示点。
  • 分支: 一系列代表您的项目随着时间的变化的提交。每个存储库都有一个默认分支,其中包含代码的生产就绪版本。在您开发新功能,修复错误或对项目进行其他更改时创建其他分支。这些分支将您的实验代码与您的测试生产代码分开。
  • 合并: 两个或更多分支的合并历史。大多数情况下,您会将功能分支合并到存储库的默认或部署分支中,以便将功能转移到生产环境中。
  • 标记: 指向特定提交的指针,提供对事件的持久引用。通常,标签与语义版本控制一起使用,以在应用程序发布时代表点。

GitHub是一个协作平台

GitHub是Git仓库的主机,具有协作功能,可以让您对代码进行更改和测试。用Git的话来说,GitHub是一个远程的,为开发人员提供了一个可以共享的工作的真实来源。除了访问存储库的所有Git数据之外,GitHub还有一些关键的术语:

  • 问题: 对您的项目进行一般讨论,制定新功能计划并讨论错误。一个问题只是一个讨论,没有实际的代码改变发生在这里。
  • 拉取请求: 拉取请求是您要求合并到默认分支的一组提交。拉取请求提供了一个讨论您所提​​议的更改的地方,并邀请其他团队成员评论和完成代码评审。拉取请求还可以帮助您看到自动化测试和许多其他很酷的集成的结果。

GitHub旨在为开发人员提供高度透明和环境的环境,从而做出最佳的工作。

总之,Git处理版本控制,GitHub处理协作。

现代开发者工具包

Git和GitHub一起构成了现代开发人员工具箱的核心。与Salesforce应用程序类似,数百个集成商已经开发了一些工具来根据您的偏好定制和扩展GitHub的功能。这个不断发展的生态系统执行重要任务,如项目管理,持续集成测试,部署,代码审查等。开发者可能每天使用GitHub,但它可能不是唯一使用的工具。

注意

GitHub是一款可轻松与新的Salesforce Developer Experience(DX)集成的工具。 Salesforce DX是一套新的工具,可以简化整个开发生命周期,从改进团队开发和协作,到促进自动化测试和持续集成,使发布周期更加高效和灵活。而且这也是一个新的开发模式,将真实的来源从组织转移到您的版本控制系统(VCS)。 GitHub可以派上用场,因为它的VCS和其他功能。在使用SFDX模块的应用程序开发中阅读有关Salesforce DX的更多信息。

这里有几个值得注意的例子:

GitHub不是一个完整的开发环境。尽管它包含一个用于进行更改的简单UI,但大多数开发人员更喜欢在集成开发环境(IDE)中进行本地工作。 Sublime Text,Atom和Eclipse等现代文本编辑器(针对Salesforce开发人员使用Force.com IDE 2)变得越来越流行,因为他们应用相同的可定制方法,将简单的文本编辑与数千个用户创建的软件包结合起来,自定义工作流程。

持续集成(CI)和持续部署(CD)应用程序是可以添加到工作流程中的一些最强大的工具。借助GitHub,这些CI和CD集成可以根据存储库中存储的规范来测试,构建和部署项目。这些重要的整合减少了运行手动测试的时间和挫折,“它在我的机器上运行”的不一致性,并等待其他人执行简单的审查或测试。

与GitHub配合的其他类型的集成是无止境的,从代码质量检查工具到依赖关系管理,甚至自动安全检查。 GitHub的API和webhook可以让开发人员所需的任何方式添加和定制新的集成。

自定义工作流程以满足您的需求

看似无穷无尽的选择,您可以自定义GitHub,以满足您的项目的确切需求和偏好。无论您是喜欢GitHub内置项目之类的轻量级项目管理解决方案还是像Waffle.io或ZenHub集成之类的全功能项目,GitHub生态系统中都有丰富的选项。在下一个单元中,我们介绍基础的GitHub流程,但是从哪里获取它,取决于您!