如何快速上手公司开发流程以及git操作?

平时在学校压根就没有接触过git。实习第一次派活把需求写完,mentor让我提交一下代码,我说怎么交,当时mentor就沉默了,我也沉默了。

为了不再经历这种尴尬😅,我将在本文介绍git,以及在公司常用的git操作,希望你们不会遇到此种情景😂

1. git简介

Git本质是一个版本控制系统,允许开发人员跟踪代码更改、协作开发项目并维护代码的不同版本。通过使用Git,开发人员可以创建不同的分支来处理不同的功能或修复操作,然后在准备好后将这些更改合并回主代码库。而且Git还提供了解决多个开发人员同时处理同一代码时可能出现的冲突的工具。同时由于Git是分布式版本控制系统,所以这意味着每个开发人员都有代码库的完整副本,允许他们脱离中心服务器离线独立工作。

可以说,git是每一个开发人员在公司都需要用到的东西,熟悉git操作是必备技能。

git的整体工作流程主要涉及4个关键点:

  1. 工作区:本地项目文件,正在开发中的代码
  2. 暂存区:开发完,git add添加的文件
  3. 本地仓库:执行git commit就会把暂存区的文件推送到本地仓库,如果你同时修改了a、b两个文件,但是只add了a文件到暂存区,那么commit的时候也只会推送a文件
  4. 远程仓库:git push把本地仓库的文件推送到远程仓库

2. 配置git

配置git什么的这些就不说了,详情可以参考这篇文章

3. 实习需要了解的git知识

1. 分支

才来的时候听到旁边的正式员工说,我提交到dev了,我提交到pre了,你merge一下blabla的,听的我是一头雾水,下面就具体介绍一下:

正式开发中主要有以下5个分支

分支说明用途
Dev测试环境的分支,用于实验性地开发和测试新的功能或修复程序中的bug,也就是说开发人员在自己的开发分支,写完新的功能需求或者修复了bug之后就会推送到这个分支上来,后面还有专门的测试在这个分支上拉代码进行功能测试QA、测试
Pre预生产环境的分支,用于准备将要发布到生产环境的代码。在这个分支上,开发人员会测试和修复生产环境中可能出现的问题,例如兼容性、性能和安全问题等。**Pre与dev的主要区别是:Dev分支是用于开发和测试的,而Pre分支是一个更加稳定和可靠的预发布版本,在生产环境进行它的生命周期之前进行最后的审核和测试。**一旦确定pre分支上的所有测试都通过并且没有任何警告或错误,最终的代码就会被推送到生产环境中QA预发布前最终测试
Master正式环境分支,包含应用程序或项目的主要代码库,即已经在生产环境中运行的代码。Master分支上所有的更改都应该经过仔细的审核和测试,只有通过才能被推送到生产环境中,包含这个项目或应用程序的最稳定版本,并且只允许项目或应用程序的管理员或代码管理员更新线上使用
Hotfix[唯一标识符]用于修复生产环境上的紧急问题或bug的分支,通常基于Master分支创建,而不是基于Dev分支,因为它需要尽快的修复问题并部署到生产环境中,通常非常短暂,仅仅是专门用于修复某些紧急问题的临时分支修复某些紧急问题
Feature[唯一标识符]从Dev分支派生的分支,旨在为应用程序或项目添加新的功能或更新,也叫做开发分支,通常被用于Dev分支上的长期开发和测试,因为它可以让开发人员同时处理多个功能并进行平行开发,进而加速新功能的开发速度。在Feature分支上,开发人员可以独立地开发新的功能和更改,然后把这些更改合并到Dev分支本地开发/自测

2. 千万不要干的事儿

知道上面这几个分支之后,就是说实习生就老老实实写功能就好了,写好了自己push到个人分支里面就ok,其他的让mentor来干,好奇心害死猫,千不要在公司的分支上乱操作,尤其是以下几种操作:

  1. 🈲️把dev合并到master
  2. 🈲️把pre合并到master
  3. 🈲️个人分支上(hotfix/feature)没有自测过的代码合并到dev/pre里面,这是实习生最容易出错的地方

总之,还在熟悉阶段的时候不要去操作dev,pre分支

3. 正常开发流程以及git操作命令

  1. 首先肯定是产品开会,确认需求,然后你的mentor给你分需求

  2. 确认需求后,就拉代码,从最新的master上创建新的feature分支,供自己开发

    1. 首先你得在master分支上拉取代码

      //直接从项目地址直接克隆代码就行,当然还有其他的方法,这个最简单
      git clone xxx
      
    2. 然后就创建一个自己的feature分支,就可以在上面开发自测了

      //创建分支
      git branch feature/<feature-name>
      
      //切换分支
      git checkout feature/<feature-name>
      
      //如果公司配置了GitFlow工作流,可以用一行git命令完成上面两个步骤
      git checkout -b feature/<feature-name>
      
  3. 开发完了之后,你需要提交代码,一开始不会让你合并dev的,所以你只是把本地分支推送到远程分支,让你的mentor检查,然后再merge到dev去

    1. 查看你修改了哪些文件,可能有些是你没注意不小心改到的,得检查一下

      git status
      
    2. 将修改后的文件加入暂存区,并将这些修改包括在下一次提交中

      //把所有文件都放入暂存区
      git add .
      
      //也可以指定你想要推送的文件到暂存区
      git add <file> 
      
    3. 将暂存区的修改提交到本地版本库,并添加一条提交信息(commit message)描述本次提交的内容

      git commit -m "这里是提交信息"
      

      这个提交的信息也不是乱写的,一般格式是“: ”,这个tag就类似于标签,能直白的显示你这次提交代码是修复bug,还是实现新功能等等,常见的tag标记包括下面这几种:

      bugfix:表示本次提交是修复 Bug 的,通常在提交信息中加入 “fix #问题编号” 表示该提交修复了某一个已知的问题。

      feature:表示本次提交是新功能的实现。

      refactor:表示本次提交是代码重构,可能会修改一些已有功能的实现,但不影响其外部功能。

      performance:表示本次提交是为了优化性能。

      docs:表示本次提交修改了文档,如修改 README.md 等文件。

      style:表示本次提交是对代码进行格式化或样式修改,比如修正拼写错误、调整代码缩进、更正注释等。

      test:表示本次提交是测试用例的修改或新增。

      也可以根据需要自定义一些标记,但是要保证自定义标记的语义清晰,让别人容看得懂

    4. 如果是一个人在开发该分支,这一步就不需要了,如果是多人在该分支协作开发的话,提交代码之前,需要把分支最新的代码拉到本地(因为别人可能提交新的功能,你需要在本地把这部分合并一下),再提交

      //先拉取,会提示是否有文件改变,git会自动合并
      git pull
      
      //如果有改变,需要再add一下
      git add .
      
    5. 然后就是推代码了

      //如果是单独创建的future分支,还没push过代码,需要把这个本地分支推到远程分支
      git push --set-upstream origin feature/<future-name>
      
      //把本地分支推送到远程分支后,再push一遍才是推送代码
      git push
      
全部评论

相关推荐

事件循环(Event&nbsp;Loop)是&nbsp;JavaScript&nbsp;异步编程的关键概念,用于管理和调度异步操作的执行顺序。&nbsp;它负责监控执行栈(执行主线程)和任务队列(消息队列),并确保适时地将任务从队列中取出并执行。事件循环的主要作用如下:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=aa2d7fa706914dfc9afef6476efb3004处理同步任务:&nbsp;当代码执行时,JavaScript&nbsp;引擎会将同步任务按照执行顺序放入执行栈中,按照先进先出的原则逐个执行。处理异步任务:&nbsp;当遇到异步任务时,如定时器回调函数、事件监听器的回调函数、Promise&nbsp;的回调函数等,它们不会立即执行,而是被放入任务队列中等待执行。调度任务执行:&nbsp;事件循环在执行栈为空时,会从任务队列中提取一个任务(FIFO&nbsp;的顺序)放入执行栈中执行。这个过程称为&nbsp;&quot;tick&quot;,即每一次事件循环的迭代。处理微任务和宏任务:&nbsp;在一个&nbsp;tick&nbsp;中,任务分为微任务(microtask)和宏任务(macrotask)。微任务包括&nbsp;Promise&nbsp;的回调函数、MutationObserver&nbsp;的回调函数等。宏任务包括定时器回调函数、事件监听器的回调函数等。事件循环在一个&nbsp;tick&nbsp;中会先处理所有微任务,然后再处理宏任务。循环执行:&nbsp;事件循环会不断地重复执行上述步骤,持续处理和调度任务,直到任务队列为空。
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务