7 个常见的 Git 相关的问题

Git 是目前最流行的版本控制系统,GitHub 和 GitLab 是当前最流行的代码托管平台,熟练掌握 Git,可以说是程序员的必备技能。我整理了大家普遍关切的 7 个问题,并附上我的理解和回答,希望这样的方式可以让大家对 Git 有更进一步的认识,更好地掌握 Git、GitHub 和 GitLab。

关于 Git

1. 怎么花最少的时间从 Git 小白变成 Git 高手?

Git 小白通常会有下面的行为特征:

  • 只会用基本得不能再基本的 Git 命令;
  • 有时候会被 Git 弹出来的一串提示信息吓一大跳;
  • 工作中遇到 Git 问题时,通常心跳加速,束手无策…

想成为真正的 Git 高手,需要熟悉 Git 的概念并掌握 Git 的工作原理。当我们理解了这些,就能更快地掌握 Git 。换句话说, 当我们学会了像 Git 一样思考,再加上多动手实践,
过不了多久,我们就有能力快速找到所需的 Git 命令,用它们来解决各种版本管理的问题了。

2.checkout 和 reset 太相似,该选哪个?

这两个命令的用法很多又很相似,咱们的教程并不介绍所有用法,而是挑选出最常见的应用场景,教会大家 在每种场景中使用哪种命令
。并且总结出:对于带文件的方式,“reset” 用来变更暂存区的文件,而 “checkout” 用来变更工作区的文件。
这样安排,既突出实用性,又降低不必要的难度。等大家用熟 Git 后,再带着问题查这两个命令的其他用法也不迟。

关于 GitHub

3、如何在 GitHub 上找到感兴趣的开源项目?**

可能多数人只会在 GitHub 首页的 search 输入框中,通过简单地写几个关键字的方式来找开源项目。其实 GitHub 为大家准备了高级搜索的功能,其中还有不少的讲究。比如:

  • 登录前和登录后查询的结果是有差异的;
  • 搜 Git 仓库的方法和搜代码的方法是不能同时起作用的;
  • 一个 Git 仓库的 readme 在搜索中起到非常大的作用;
  • 还能通过 topic 的方式来搜索 Git 仓库…

当我们学会如何使用 高级搜索功能
后,可以组合出多种搜索条件,这样会排除掉很多我们不需要的东西,节约不少的时间。我个人在使用 GitHub 高级搜索的时候,还发现某些场景下,即便有了这个功能,有时候还是不能满足我的需求。在那种情况下,我会结合 Google 等搜索工具
来帮忙。 我们的课程会详尽地讲解高级搜索的功能,让大家能高效地找到可借鉴的开源项目。

4、如何挑选团队协作的工作流?

在 GitHub 之前,我们通常看到团队的 代码管理、需求管理、bug 管理和进度管理
都是由不同的服务提供的,各个服务之间的互通不是很便捷。而 GitHub 把这些服务都融入到了一起,咱们的课程不妨找一些 优秀的开源项目
学习一下,看看这些项目的成员在 GitHub 上都是如何高效协作的。

其次,说起研发的工作流,不得不说一说关于 分支模型
的事。我们的课程会具体分析各类分支模型的特点和应用场景,帮助研发团队选择合适的代码集成的方式,并给大家提供有效的解决方案。

关于 GitLab

5、国内互联网企业为何喜欢 GitLab ?

GitLab 具备下面的几个特征,让大家不得不喜欢它:

  • 有免费的社区版本,而且还能安装并运行在公司局域网里;
  • 提供 DevOps 全生命周期的解决方案,功能很强;
  • 易用性非常好,接口也非常丰富;
  • 与时俱进,持续交付,不断推出新功能;
  • 有明确的产品路线规划,且对外公开…

6、GitLab 上是怎么保证集成分支的质量的?

GitLab 主要通过下面的方式来保证集成分支的质量:

  • 可以把集成分支配置为保护分支,不允许任何人把变更直接 push 到集成分支 ;
  • 大家在特性分支上做开发,自测通过后向集成分支发起 Merge Request;
  • 在 Merge Request 的环节,有经验的开发人员可以对提交的变更做 review,发表改进的意见,代码变更的作者则会收到 review 的提醒邮件 ;
  • 在 Merge Request 的环节,还能设置静态检查、编译打包、单元测试等检查机制,如果没有通过所有检查项,则不允许合入到集成分支。

咱们的课程会带大家走一遍 整个研发过程质量管理的流程
,让大家在实际工作中有能力使用这些功能点。

7、在 GitLab 上怎么开展持续集成 ( CI )?

GitLab 的 CI 分为两类:

  • 采用 GitLab 自带的 CI;
  • 通过 GitLab Webhook 的方式向外部的 CI 服务(比如 Jenkins )发送 Git 仓库变更信息,从而触发 CI。

持续集成和部署(CI/CD)在 GitLab 的开发过程中也发挥了重要作用。采用持续集成和部署使代码审查更有效并缩短了开发周期,让开发人员更快地发现错误并从错误中吸取经验。这也是 GitLab 公司把持续集成和持续部署功能与源代码管理功能集成在一起的原因。

我们的课程会告诉大家如何使用 GitLab 自带的 CI ,带大家见识强大的 Pipeline 流水线 ,并尝试着把应用部署到 AWS 云服务上 。通过这种方式,让大家了解当下流行的且被证明有效的持续集成和持续部署(CI/CD)的实践,以便 在工作中快速适应持续集成和持续交付的环境,这样还可以促使大家提升各自 CI/CD 的工具与环境。

学好 Git、GitHub 和 GitLab 三剑客,仿佛乘上了安全且高速的列车,可以让团队更高效地完成研发任务,也可以让个人更顺利地参与协作,何乐而不为呢?

我在 这门课
里,不光讲简单的 Git 命令使用,还会讲更多 Git 原理性方面的内容,以及 GitHub 和 GitLab。知其然更知其所以然,怎么用这些做代码 review ,做项目管理,怎么去做持续集成,这些都是更高维度的东西,而不仅仅是去学几个工具。
关于 Git 你有什么疑问或想法,欢迎你在下方的留言区和我讨论。

内容选自极客时间
玩转 Git 三剑客

专栏