Git 作为目前最知名的版本控制工具,早已成为开发者日常工作中不可或缺的利器。虽然长期使用积累了不少经验,但在实际开发中仍然会遇到各种值得记录的问题,因此专门创建这篇博客作为实践笔记,后续将持续更新补充。

本文主要记录个人在 Git 使用过程中的经验总结和疑难问题解决方案,内容偏重实践心得而非系统教学。需要说明的是,个人项目中的 Git 使用无需拘泥于严格规范,完全可以根据习惯自由操作;但若涉及团队协作或开源项目,则建议遵循既定的版本控制规范。

Commit 规范

commit 提交信息其实没有强制性的规定,个人使用时也完全可以不用在意这玩意,我的笔记仓库和备份仓库甚至是直接使用 update 2025_01_22 10:30:56 这种形式提交信息的。但是如果是在多人协同或者开源项目中,建议还是规范一下提交信息,这样方便自己和他人快速高效的查看提交的代码内容。

即使你不是多人协同开发,个人开发项目时也建议遵循一下规范,毕竟有不少时候我们会忘记当时开发的某样功能的逻辑和场景需求,通过清晰明了的 commit 的信息可以一窥我们当时的想法和思路

编写良好的 Commit messages 可以达到3个重要的目的:

目前业内主流推荐是 Angular 项目的 Git Commit Guidelines

# 完整版本
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

# 精简版本
<type>: <subject>

多数情况下我们都是使用精简版即可,完整版使用的情况非常少;精简版无论是个人开发使用,还是团队协同开发使用都是非常棒的选择。

单次提交注意事项:提交问题必须为同一类别;提交问题不要超过三个;如果发现提交的 commit 不符合规范,git commit --amend -m "新的提交信息"git reset --hard HEAD 再重新提交一次。

分支规范

以下内容是在多人协同开发时,团队的一些心得规范,如果你是独狼作战可直接忽视

业界常见的两大主分支(master、develop)、三个辅助分支(feature、release、hotfix)的生命周期

分支名称

分支与环境

系统开发过程中常用的环境:
DEV 环境:用于开发者调试使用;
FAT 环境:功能验收测试环境,用于测试环境下的软件测试者测试使用;
UAT 环境:用户验收测试环境,用于生产环境下的软件测试者测试使用;
PRO 环境:生产环境,对外投放提供用户使用。

分支功能环境可访问
master主分支,稳定版本     PRO
develop开发分支,最新版本    DEV
feature开发分支,实现新特性   
test测试分支,功能测试    FAT
release预上线分支,发布新版本  UAT
hotfix紧急修复分支,修复线上问题

网络问题

这个可以说是使用 github 的一个重要门槛,使用代理这个我就不多说了,毕竟用能上 github 的同学基本都是知道的不需要我废话了。但是如果你的代理网络不是那么稳定,或者你想用一些免费稳定的,我这里推荐使用 Watt Toolkit(原名 Steam++) 来临时代替一下,这个软件本身是一个加速器,主要用来给 steam 进行网络加速,但它也内置了一个给 github 加速的功能,稳定性是非常可以的(默认情况下它是通过修改本地 hosts 文件配置来进行网络加速的,正常情况下它不会影响你原 hosts 文件中的内容)

遇到的网络问题

error: RPC failed; curl 56 Recv failure: Connection was reset
error: 4667 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

这是我前几天遇到的一个问题,在我 clone 一个 github 仓库代码时出现的问题,表现出来的流程是:能够拉取到 git 信息和配置文件,但在下载仓库文件时出现了网速过慢的情况,并且临近下载完毕时会报出上面的错误信息,根据信息得知是连接被重置了。这种问题一般出现在仓库文件过多过大的情况下,我的这个仓库是一个「前端项目集合」,有很多个练习使用的前端项目被集中的放到了一起,但有对非必要文件进行屏蔽,当前仓库的大小也只有 16MB 左右,远远算不上大型仓库。其实可已通过页面上的 download ZIP 下载代码包,但这样的代码包是没有 git 配置和信息的,我必须使用 git clone。

网上提供的一些解决方案是:1、使用镜像替代访问;2、使用一些代理网站加速下载;3、修改 git 配置,设置传输缓存的阈值;4、换个代理。

第一种方法不适合我的仓库,这个仓库只是一个练习代码集合,很难被镜像仓库代理,尝试了也基本都是 400 错误。
第二种方法是可以下载到仓库代码的,但是是压缩包形式的,没错,这其实和直接在 github 仓库页面 download ZIP 是一样的结果,不符合我的预期。
第三种方法是对 git 进行一些配置上的调整,我也尝试了,但很可惜 clone 速度只是从原来的 20KB 提升到了 40KB 左右(WOW,网速翻倍嘞hhhhh),但可惜最后还是会出现上面的连接重置问题。

调整 git 配置的命令

# 取消相关的网络限制
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

# 设置传输缓存的阈值
git config --global http.postBuffer 524288000

参考:https://blog.csdn.net/qq_31752115/article/details/108118260

至于第四种方式,我也去尝试了一下,我拢共替换了四个代理,很可惜这个问题依旧是存在,网速完全没有改善。虽然我确实认为这就是网速和仓库体积导致的问题,因为我还尝试了其他其他更小型的仓库,网速可以正常达到 200KB 并且不会出现错误,但尝试了很多还是无果。

最后,我决定使用国内的 gitee 直接克隆一份 github 仓库,gitee 官方是支持这样处理的,而且速度还挺快的。(其实这个仓库之前一直是有备份到 gitee 的,但最近两个月我都没有进行备份,导致 gitee 这边版本落后了,再一次证明了多备份的必要性 ┭┮﹏┭┮)

近期文章
title: KCP 协议
time: 2025-05-24
tag: #网络
title: 网页多图优化
time: 2025-01-24
tag: #前端#Web开发