Git 提交竟然还能这么用?

大家好,我是鱼皮。Git 是主流的代码版本控制系统,是团队协作开发中必不可少的工具。

之前已经给大家分享过 Git / GitHub 的学习指南,感兴趣的同学可以先看视频了解:https://www.bilibili.com/video/BV1KZ4y1e7cG。

这篇文章,主要是给大家分享 Git 的核心功能 提交(Commit)的作用,帮助大家更好地利用 Git 这一工具来提高自己的开发工作效率。

什么是 Git 提交?

Git 提交是指将你的代码保存到 Git 本地存储库,就像用 Word 写长篇论文时进行保存文件一样。每次 Git 提交时都会创建一个唯一的版本,除了记录本次新增或发生修改的代码外,还可以包含提交信息,来概括自己这次提交的改动内容。

如下图,就是一次 Git 提交:

Git 提交的作用

Git 提交有很多作用,我将它分为 基础用法其他妙用

基本作用

历史记录

Git 提交最基本的作用就是维护项目的历史记录。每次提交都会记录代码库的状态,包括文件的添加、修改和删除;还包括一些提交信息,比如提交时间、描述等。这使得我们可以通过查看所有的历史提交来追溯项目的开发进度和历程,了解每个提交中都发生了什么变化。

比如查看我们编程导航文档网站项目的提交记录,能看到我是怎么一步一步构建出这个文档网站的:

开源地址:https://github.com/liyupi/code-xingqiu

在企业开发中,如果一个人写了 Bug,还死不承认,那么就可以搬出 Git 提交记录,每一行代码是谁提交的都能很快地查出来,谨防甩锅!

版本控制

另一个 Git 提交的基本作用是版本控制。每个提交都代表了代码库的一个版本,这意味着开发者可以随时切换代码版本进行开发,恢复旧版本的代码、或者撤销某次提交的代码改动。

推荐新手使用可视化工具而不是 Git 命令进行版本的切换和撤销提交,在不了解 Git 工作机制的情况下使用命令操作很容易出现问题。

如下图,在 JetBrains 系列开发工具中,右键某个提交,就可以切换版本或撤销提交了:

代码对比

你可以轻松地查看两个提交之间的所有代码更改,便于快速了解哪些部分发生了变化。这对于解决代码冲突、查找错误或审查代码非常有帮助。

在 JetBrains 系列开发工具中,只需要选中 2 个提交,然后点右键,选择 Compare Versions 就能实现代码对比了:

改动了哪些代码一目了然:

一般情况下,如果我们因为某次代码改动导致项目出现了新的 Bug。通过这种方式对比本次改动的所有代码,很快就能发现 Bug 出现的原因了。

其他妙用

除了基本作用外,Git 提交还有一些妙用~

记录信息

像上面提到的,Git 提交不仅能用于记录代码更改,我们还可以在提交信息中包含有关这次更改的重要信息。比如本次改动代码的介绍、代码更改的原因、相关的任务(需求单)或功能等。可以简单理解为给本次工作写总结和描述。

如果提交信息编写得非常清晰完善,那么项目的团队成员可以更容易地理解每个提交,甚至能做到 “提交即文档”,提高协作和项目维护效率。

正因如此,很多团队会定制自己的提交信息规范,比如之前我在鹅厂的时候,每次提交都建议带上需求单的地址,便于了解这次提交是为了完成什么需求。

这里给大家推荐一种很常用的提交信息规范 —— 约定式提交,每次提交信息都需要遵循以下的结构:

《约定式提交》文档:https://www.conventionalcommits.org/zh-hans/v1.0.0/

<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]

当然,这种方式有利有弊,可能有同学会觉得 “我注释都懒得写,你还让我写提交信息?” 这取决于你们项目的规模和紧急程度等因素,反正团队内部保持一致就好。

像我在用 Git 开发个人项目时,也不是每次都写很详细的提交信息的。但是带 编程导航 的同学从 0 开发项目时,每场直播写的代码都会单独作为一次提交,如下图:

是不是很清晰呢?这样做的好处是,大家想获取某场直播对应的中间代码(而不是最终的成品代码)时,只需要点击某次提交记录就可以获取到了,很方便。

如果你的提交信息写得非常标准、统一结构,那么甚至还可以用程序自动读取所有的提交信息,生成日志、或者输出提交报告。

自动化构建部署

大厂研发流程中,一般都是使用 CI / CD(持续集成和持续部署)平台,以流水线的形式自动构建部署项目的。

Git 提交可以和 CI / CD 平台进行集成,比如自动监视代码库中的提交,并在每次提交后自动触发构建和部署任务。一个典型的使用场景是,每次代码开发完成后,先提交代码到测试分支,然后 CI / CD 平台监测到本次提交,并立即在测试环境中构建和部署,而不需要人工操作,从而提交效率。

GitHub Actions 和 GitHub Webhooks 都可以实现上述功能,感兴趣的同学可以尝试下。

GitHub Actions 文档教程:https://docs.github.com/zh/actions/quickstart

检验项目真假

最后这个点就比较独特了,那就是面试官可以通过查看 Git 的提交记录来判断你的项目真假、是不是自己做的。

比如我收到一些同学的简历中,有的开源项目看起来感觉很厉害,但是点进仓库看了下提交记录,发现寥寥无几,甚至有的只有 1 次!像下图这样:

那么这个项目真的是他自己从 0 开始做的么?答案就显而易见了。

如果真的是你自己用心做的项目,提交记录绝对不止 1 次,而且面试官能够通过提交记录很清晰地了解到你的项目开发周期。

像我的 yuindex Web 终端项目一样,这才是比较真实、有说服力的:

其他人也能从你的提交记录中,感受到你对项目的用心程度。

讲到这里,是不是有些同学恍然大悟,知道为啥自己的项目明明开源了,但是没有收到面试邀请、或者被面试官觉得项目不真实了?

实践

以上就是本次分享,Git 提交的实践其实非常简单,我建议大家每次做新项目时,无论大小,都用 Git 来托管你的项目,并且每开发完一个功能或解决 Bug,都进行一次提交。等项目完成后回过头来看这些提交记录,都是自己宝贵的财富。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/167640.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业微信机器人定时发送图文信息,后续无需人工操作

企业微信群机器人是企业微信的内置功能&#xff0c;可以理解为是一个群提醒通知工具&#xff0c;接收数据并自动发送信息到企业微信群中。 数环通实现打通定时器和企业微信机器人的对接&#xff0c;定时执行自动化流程&#xff0c;无需人工干预&#xff0c;实现工作流程自动化&…

Thales安全解决方案:国家网络安全的关键

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显。在这个背景下&#xff0c;Thales安全解决方案正成为提高国家网络安全的关键。本文将探讨Thales安全解决方案如何为国家网络安全保驾护航。 一、Thales安全解决方案概述 Thales安全解决方案是一种全方位的网络安全防护…

《微信小程序开发从入门到实战》学习十八

3.3 开发创建投票页面 3.3.5 数据的双向传递 通过上一小节的代码和预览效果可以看到使用时间函数可以将视图层传递到逻辑层。 视图层数据由小程序管理&#xff0c;逻辑层通常保存在data对象&#xff0c;必须由开发者自己管理。 微信开发工具的AppData的面板可以实时查看到页…

使用 uWSGI 部署 Django 应用详解

概要 部署 Django 应用到生产环境是一个至关重要的步骤&#xff0c;其中选择合适的 WSGI 服务器对于确保应用的稳定性和性能至关重要。uWSGI 是一个流行的选择&#xff0c;它不仅高效、轻量&#xff0c;还非常灵活。本文将详细介绍如何使用 uWSGI 来部署 Django 应用&#xff…

【Linux】C文件系统详解(四)——磁盘的物理和抽象结构

文章目录 磁盘结构磁盘物理结构磁盘的具体物理结构磁盘结构的逻辑抽象 文件系统BootBlockSuperBlockGroupDescriptorTableinode tableDataBlocksinodeBitmapblockBitmaplinux中的inode 和文件名如何理解文件的增删查改删 补充细节1.如果文件误删了,我们该怎么办?2.inode确定分…

电脑监控软件都有哪些,哪款好用丨全网盘点

电脑监控软件是一种用于监视和控制计算机的软件工具&#xff0c;可以帮助企业和个人了解计算机的使用情况&#xff0c;保护数据安全&#xff0c;提高工作效率等。 电脑监控软件都有哪些&#xff1a; 1、域之盾软件 这是一款功能强大的电脑监控软件&#xff0c;可以实时监控电脑…

python绘图常见问题及解决方法总结

文章目录 1. 多个图片绘制到一起时出现title和xstick重合 1. 多个图片绘制到一起时出现title和xstick重合 fig, axes plt.subplots(6, 2, figsize(20, 40)) # Adjust the layout padding plt.subplots_adjust(hspace0.5, wspace0.4) # Plotting scatter plots for Tiu and ws_…

详解使用asyncio实现playwright并发操作(复制源码即可运行)

asyncio实现并发 我们可以使用asyncio来解决palywright中并发的问题&#xff0c;asyncio即Asynchronous I/O是python一个用来处理并发(concurrent)事件的包&#xff0c;是很多python异步架构的基础&#xff0c;多用于处理高并发网络请求方面的问题。给大家举一个经典的应用场景…

开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势未来发展方向

开源vs闭源大模型如何塑造技术的未来&#xff1f;开源模型的优劣势&未来发展方向 写在最前面一、开源与闭源&#xff1a;定义与历史背景开源和闭源的定义开源大模型&#xff1a;社区驱动的创新 二、开源和闭源的优劣势比较开源大模型&#xff08;瓶颈&#xff09;数据&…

yolov8使用opencv2实时检测,两种物品,左上角显示信息

效果为&#xff1a; 左上角显示 帧率&#xff1a;FPS 序列号&#xff1a;SN 两种物品的检测数量和总数 可以应用于工业检测 import cv2 from ultralytics import YOLO from cv2 import getTickCount, getTickFrequency # 加载 YOLOv8 模型 model YOLO("weights/yolov8s.…

微信小程序云开发 微信支付功能 逻辑+踩坑

前置条件 首先开通微信支付商户号 然后小程序后台里关联商户号 然后在开发者工具里申请api权限 云开发》设置》其他设置》微信支付配置 申请一下权限和绑定 显示已通过即可。 逻辑 首先用户点击支付按钮&#xff0c;就会触发unlock() 在unlock函数中创建新订单&#xff…

iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS

文章目录 一、前言二、VMwareMacOS镜像2.1、先下载vmware-workstation2.2、再下载macOS Big Sur(11.6) 三、图解安装过程3.1、双击VMware-WorkStation Pro图标 四、总结 一、前言 为什么会有虚拟机这种东西&#xff1f;它存在的意义是什么[能解决什么问题]&#xff1f;哈哈~你以…

解锁数据分析的神器:ChatGPT引领人工智能革命

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今数字化时代&#xff0c;数据分析成为决策…

数据结构(7-2广度~~7-15)所有代码

7-2 迷宫-广度策略 一个陷入迷宫的老鼠如何找到出口的问题。老鼠希望系统性地尝试所有的路径之后走出迷宫。如果它到达一个死胡同&#xff0c;将原路返回到上一个位置&#xff0c;尝试新的路径。在每个位置上老鼠可以向八个方向运动&#xff0c;顺序是从正东开始按照顺时针进行…

【设计模式】结构型设计模式

结构型设计模式 文章目录 结构型设计模式一、概述二、适配器模式&#xff08;Adapter Pattern&#xff09;2.1 类适配器模式2.2 对象适配器模式2.3 接口适配器模式2.4 小结 三、桥接模式&#xff08;Bridge Pattern&#xff09;四、装饰器模式&#xff08;Decorator Pattern&am…

《微信小程序开发从入门到实战》学习二十一

3.3 开发创建投票页面 3.3.9 使用picker选择器组件 使用picker选择器组件增加一个设置截止时间的功能。picker是一个从底部弹出的滚动选择器组件。picker通用属性如下&#xff1a; mode 选择器类型(selector、multiSelector、time、date、region) disabled …

USB转CAN的使用说明

前言 USB转CAN是将 TTL 信号转换为 CAN 信号的模块。采用串口作为嵌入式系统的接口&#xff0c;数据传输简单&#xff0c;无需要学习 CAN 协议&#xff0c;缩短开发周期&#xff0c;降低开发成本。模块兼容 3.3V、5V 电源&#xff0c;搭载一个 32 位的 STM32 处理芯片和一个 C…

buildadmin+tp8表格操作(7.1)表格的事件监听(el-table中的事件)

因为buildAdmin是封装的 el-table的组件&#xff0c;所以el-table中的事件&#xff0c; 也是可以使用的&#xff0c; 两者有几个事件是有共同的&#xff08;比如 双击事件&#xff09;&#xff0c; 这时可以根据自己的需要自行选择 以下代码是 buildadmin 使用 el-table中的事…

键盘映射笔记

dumpkeys命令用于显示当前系统中定义的键盘映射表。它可以帮助用户查看和理解系统中的键盘布局和键盘映射规则。 当用户执行dumpkeys命令时&#xff0c;它会读取系统中的键盘映射表文件&#xff08;通常是/etc/keymaps或/etc/console/boottime.kmap.gz&#xff09;&#xff0c;…

麒麟KYLINOS2303系统上禁用新功能介绍页面

原文链接&#xff1a;麒麟KYLINOS2303系统上禁用新功能介绍页面 hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇在麒麟KYLINOS2303系统上禁用新功能介绍页面的文章&#xff0c;在我们安装完系统登录后&#xff0c;会发现有新功能介绍这个界面&#xff0c;我们可以通…