[{"content":"写下这篇博客，心中不免有些感慨，散落的时光就如同秋风般凛冽而寒冷。从第一个程序，敲出print语句，感觉有些惊奇；到第一次比赛，失落地面对屏幕，痛恨自己没有足够的能力；再到一点点充实自我，两段实习，一篇博客，一点点拉下代码，自己构筑的过程。2025年，今年至少没有白费。\n1. 迷惘 青岛的天气总是多变，阴天居多，郁郁沉沉，刮过中心图书馆大风，构成了我大学前两年的背景。\n大概自从我上大学开始，就不太喜欢阴雨天，每次踩着白色的鞋，湿哒哒地走在柏油路面上，感觉上课的心又死了一分。我看着同学，绩点耀眼或是竞赛加身，仿佛每个人都往前走。而我，只有脚下这一滩被雨水打湿的、模糊的倒影。\n代码于我，最初只是屏幕上闪烁的光标，是cpp课上晦涩难懂的符号。我试图抓住它，它却像青岛海边的雾，看得见，摸不着，只会让衣衫变得更沉。\n2. 破晓 转机发生在一个同样沉闷的下午，但记忆里却像是有一束光硬生生挤了进来。我记不清是哪一次，又一次在荒废了许多时间过后，我发现，再不行动，就不会再有机会了。\n过程是沉默的，像在黑暗的隧道里独自掘进。\n3. 步履 后来，我拿到了实习。去往成都的火车上，我看着窗外飞速倒退的景物，心里是前所未有的兴奋。我第一次接触到部署大模型，第一次在真实的项目里体会“代码”。\n再后来，是海尔。通勤四个小时的疲惫，陌生技术栈带来的压力，让我一度不想坚持。但也是在那里，mentor扔过来的英文文档，卡顿的办公电脑，还有那个需要从零开始的简历筛选系统，都在无声催促我坚持。\n我终于明白，成长从来不是一瞬间的顿悟，而是这些看似琐碎、艰难、甚至令人沮丧的日夜的叠加。是在一次又一次“做不到”之后，硬着头皮去做的过程。\n4. 回望 如今，站在大三的中点上回望。青岛的风依旧在吹，但似乎不再那么刺骨。\n我依然会为未知的前路感到忐忑，为自身能力的局限而焦虑。我的代码依旧称不上优雅，我离那些技术大牛依然有着光年的距离。\n但，那又怎样呢？\n那个在阴雨天里踩着湿鞋、满心迷茫的少年，已经用自己的双脚，一步步丈量出了从宿舍楼到公司工位的距离。他或许走得很慢，鞋上沾满了泥泞，但他的口袋里，已经装下了两段沉甸甸的经历、一个被代码重构过的头脑，和一颗愈发坚韧的心脏。\n代码如诗，写的不仅是机器能懂的逻辑，更是自己走过的路。那些在深夜亮着的屏幕，最终没有辜负每一个熬过去的自己。\n秋风萧瑟，冬天的脚步近了。这条路，我会继续走下去。\n","date":"2025-10-02T00:00:00Z","image":"https://huanhe.site/p/%E7%AC%94%E5%B0%96%E9%9A%8F%E6%83%B3%E8%AE%B0%E5%BD%952025%E4%B8%8A%E5%8D%8A%E5%B9%B4/cover_hu_4958a8447bf4047.webp","permalink":"https://huanhe.site/p/%E7%AC%94%E5%B0%96%E9%9A%8F%E6%83%B3%E8%AE%B0%E5%BD%952025%E4%B8%8A%E5%8D%8A%E5%B9%B4/","title":"笔尖随想——记录2025上半年"},{"content":"加油呀！！！！窝要加油变强💪\n📅 十月：夯实基础 国庆假期（9.29 - 10.1） 没离职海尔的时候\nJSON格式处理 SMTP邮件发送 设计模式学习： 多线程 单例模式 工厂模式 Python3内置库深入： MongoDB, urllib, pip operator, math, requests, random OpenAI, statistics, hashlib pyecharts, sys, pickle, subprocess queue, StringIO, logging datetime, re, csv threading, asyncio（没学完，都只是看了个皮毛🥲后面用到再补） 假期期间\n个人网站搭建（就是现在这个博客！） 国庆假后 核心学习内容\nPython基础巩固 OOP编程 SQL数据库 Pandas, NumPy, Matplotlib 三个实战项目\n学生成绩管理系统（面向过程版） 学生成绩管理系统（OOP重构版） Kaggle数据集分析 选择基础数据集 数据探索与清洗 可视化分析 十一月：深入AI 主要学习内容 大模型课程深入学习 RAG技术栈 检索算法 LoRA微调 深度学习复习 机器学习复习 强化学习入门 实践要求 手写复现课程代码 理解每个算法原理 做好笔记和总结 多线程实践 在RAG项目中，尝试用多线程并行处理多个文件向量化\n十二月：学习企业的开发方法和思想 学习内容 Linux基础 Docker基础 Web编程基础 Elasticsearch基础 HTTP协议 RESTful API（FastAPI） 核心项目：智能电影推荐系统 这个项目将串联所有技术点：\n技术栈应用\nWeb编程（FastAPI） - 后端API服务\nGET /search?q=科幻：接收搜索关键词，返回相关电影 POST /recommend：接收用户喜欢的电影ID，返回推荐列表 Elasticsearch - 搜索引擎\n导入电影数据（标题、简介、演员等） 快速检索，替代慢速数据库查询 支持全文搜索和相关性排序 机器学习模型\nPandas处理电影数据 Scikit-learn训练协同过滤推荐模型 FastAPI调用模型提供推荐服务 Docker - 容器化部署\n编写Dockerfile，定义环境依赖 docker-compose一键启动FastAPI + ES 确保跨平台一致运行 便于云服务器部署 解决的实际问题\n问题：Docker、Web编程、ES这些在实践中怎么应用？\n答案：通过这个智能电影推荐系统，将所有技术点串联起来，形成完整的应用。\n代码管理 将所有代码上传到GitHub并分类整理\n多线程实践 在Web服务项目中，用线程池处理并发请求\n一月：重构 核心任务 重构之前在幂律做的合同抽取系统\n使用企业级开发规范 代码模块化、可维护 添加完整的文档 Docker容器化部署 多线程实践 多线程并行处理多个合同文件，提升处理效率\n路漫漫其修远兮，吾将上下而求索。\n","date":"2025-10-01T00:00:00Z","image":"https://huanhe.site/p/2025-q4-plan/cover_hu_5bd8bffacab65750.webp","permalink":"https://huanhe.site/p/2025-q4-plan/","title":"2025年十月到十二月学习计划"},{"content":"在幂律实习的时候，第一次接触到服务器连接，从一开始的手忙脚乱到后来的得心应手，这里总结一下我学到的服务器连接方法，尤其是SSH\n🤔 SSH是什么？ SSH（Secure Shell）是一种网络协议，用于在不安全的网络中安全地访问远程计算机。\n简单来说：就是让你能在自己电脑上操作远程服务器的工具。\n为什么要用SSH？\n安全：数据传输加密 方便：直接在命令行操作服务器 强大：可以传输文件、端口转发等 基础连接方法 最简单的连接命令 1 ssh username@server_ip 示例：\n1 ssh root@192.168.1.100 然后输入密码就能连接了，这种连接方式也就是最普通的密码连接。\n指定端口连接 1 ssh -p 端口号 username@server_ip 示例：\n1 ssh -p 22022 root@192.168.1.100 用于端口不是默认端口（22）的情况\n公钥密钥认证（此乃重中之重） 为什么要用密钥而不是密码？ 更安全 - 密钥比密码难破解得多 更方便 - 不用每次输入密码 更专业 - 在我实习中的两家企业，都这么干 生成SSH密钥对 在本地电脑上执行：\n1 ssh-keygen -t rsa -b 4096 -C \u0026#34;your_email@example.com\u0026#34; 参数解释：\n-t rsa：使用RSA加密算法 -b 4096：密钥长度4096位（更安全） -C：注释，通常写邮箱 执行过程：\n1 2 3 4 5 6 7 8 # 1. 询问密钥保存位置（直接回车用默认） Enter file in which to save the key (/Users/你的用户名/.ssh/id_rsa): # 2. 询问是否设置密码（可以直接回车跳过） Enter passphrase (empty for no passphrase): # 3. 再次确认密码 Enter same passphrase again: 生成的文件：\n~/.ssh/id_rsa - 私钥（千万不要泄露！） ~/.ssh/id_rsa.pub - 公钥（可以随便给） 将公钥上传到服务器 方法一：使用 ssh-copy-id（推荐） 下面会讲这种方法的具体原理和使用说明\n1 ssh-copy-id username@server_ip 方法二：手动上传\n1 2 3 4 5 6 7 8 9 10 11 # 1. 查看公钥内容 cat ~/.ssh/id_rsa.pub # 2. 复制输出的内容 # 3. 登录服务器，将公钥添加到授权文件 ssh username@server_ip mkdir -p ~/.ssh echo \u0026#34;你的公钥内容\u0026#34; \u0026gt;\u0026gt; ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 测试密钥登录 1 ssh username@server_ip 如果不需要输入密码就登录成功了，说明配置成功了\n配置SSH Config文件 为什么要配置Config？ 每次都要输入 ssh user@192.168.1.100 -p 22022 太麻烦了！\n配置后只需要：ssh myserver ✨\n创建/编辑Config文件 1 2 3 4 5 # Windows notepad ~/.ssh/config # Mac/Linux vim ~/.ssh/config 配置示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 服务器1 Host GPU002 HostName 192.168.1.100 User your_username Port 22 IdentityFile ~/.ssh/id_rsa # 服务器2 - 测试服务器 Host test-server HostName test.example.com User root Port 22022 IdentityFile ~/.ssh/id_rsa_test # 服务器3 - 使用跳板机 Host jump-server HostName final.server.com User admin ProxyJump jump.server.com 配置参数说明：\nHost：别名，随便起（之后用这个连接） HostName：真实的服务器地址（IP或域名） User：登录用户名 Port：端口号（默认22可以不写） IdentityFile：私钥文件路径 ProxyJump：跳板机（如果需要通过跳板机连接，至于跳板机是什么，感兴趣的可以自行了解一下，企业运维中较为多见） 使用配置好的连接 1 2 3 4 5 # 直接用别名连接 ssh GPU002 # 传输文件也方便了 scp myfile.txt GPU002:~/ 常见问题与解决 1. Permission denied (publickey) 原因：权限问题或公钥没配置好\n解决：\n1 2 3 4 5 6 # 检查服务器上的权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys # 确认公钥已添加 cat ~/.ssh/authorized_keys 2. Connection timeout 原因：\n服务器IP错误 防火墙拦截 服务器SSH服务未启动 解决：\n1 2 3 4 5 # 测试网络连通性 ping server_ip # 测试端口是否开放 telnet server_ip 22 3. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 原因：服务器重装或IP被其他机器占用\n解决：\n1 2 # 删除旧的主机指纹 ssh-keygen -R server_ip 4. 密钥失效 原因：服务器上的 authorized_keys 被修改或删除\n解决：\n1 2 # 重新上传公钥 ssh-copy-id username@server_ip 实战案例：配置个人服务器 背景 搭建这个博客时，我租了一个云服务器，需要连接上去部署网站，所以也在这里分享一下是如何进行云服务器连接的\n服务器信息 公网IP：180.184.31.150 用户名：root 初始密码：（当时好像是连接了xshell进行连接，然后生成了初始密码？我不太确定哈） 完整配置过程 1. 生成专用密钥 1 2 3 4 5 # 为博客服务器生成专用密钥 ssh-keygen -t rsa -b 4096 -C \u0026#34;huanhe@blog\u0026#34; -f ~/.ssh/id_rsa_blog # Windows用户 ssh-keygen -t rsa -b 4096 -C \u0026#34;huanhe@blog\u0026#34; -f %USERPROFILE%\\.ssh\\id_rsa_blog 为什么用专用密钥？\n不同服务器用不同密钥，更安全 一个密钥泄露不影响其他服务器 2. 上传公钥到服务器 方法1：使用 ssh-copy-id（推荐！）\n1 2 3 4 5 # Linux/Mac ssh-copy-id -i ~/.ssh/id_rsa_blog.pub root@180.184.31.150 # Windows（需要安装OpenSSH） type %USERPROFILE%\\.ssh\\id_rsa_blog.pub | ssh root@180.184.31.150 \u0026#34;cat \u0026gt;\u0026gt; ~/.ssh/authorized_keys\u0026#34; ssh-copy-id 做了什么？\n读取你的公钥文件 连接到远程服务器（需要输入密码） 在服务器上创建 ~/.ssh 目录（如果不存在） 将公钥追加到 ~/.ssh/authorized_keys 设置正确的权限（700 和 600） 方法2：手动上传（我以前的做法）\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 1. 首次密码登录 ssh root@180.184.31.150 # 2. 创建SSH目录 mkdir -p ~/.ssh chmod 700 ~/.ssh # 3. 编辑授权文件 vim ~/.ssh/authorized_keys # 粘贴公钥内容，保存退出 # 4. 设置权限 chmod 600 ~/.ssh/authorized_keys # 5. 退出 exit 对比：\nssh-copy-id：一条命令搞定 手动上传：需要5步，容易出错 3. 配置SSH Config 编辑 ~/.ssh/config：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 博客服务器 Host blog HostName 180.184.31.150 User root Port 22 IdentityFile ~/.ssh/id_rsa_blog # 可选：保持连接 Host blog HostName 180.184.31.150 User root IdentityFile ~/.ssh/id_rsa_blog ServerAliveInterval 60 ServerAliveCountMax 3 4. 测试连接 1 2 3 4 5 6 7 8 9 10 11 # 简单！ ssh blog # 第一次连接会提示确认指纹 The authenticity of host \u0026#39;180.184.31.150\u0026#39; can\u0026#39;t be established. ECDSA key fingerprint is SHA256:xxxxxx. Are you sure you want to continue connecting (yes/no)? yes # 之后就不需要输入密码了 Welcome to Ubuntu 22.04 LTS root@server:~# 5. 修改服务器密码（安全） 1 2 3 4 5 6 7 8 # 连接后立即修改 ssh blog passwd # 输入新密码两次 New password: ******** Retype new password: ******** passwd: password updated successfully 6. 一键部署脚本 创建 deploy-blog.bat：\n1 2 3 4 5 6 7 8 9 10 11 12 13 @echo off echo 部署博客... REM 1. 生成静态文件 hugo --minify REM 2. 上传到服务器 scp -r public/* blog:/www/wwwroot/huanhe.site/ REM 3. 设置权限 ssh blog \u0026#34;chown -R www:www /www/wwwroot/huanhe.site\u0026#34; echo 部署完成 以后更新博客只需双击运行脚本就可以\n深入理解：ssh-copy-id ssh-copy-id 是什么？ ssh-copy-id 是一个脚本工具，用于将你的公钥安全地复制到远程服务器。\n基本用法 1 2 3 4 5 6 7 # 基本语法 ssh-copy-id [选项] [用户名@]主机名 # 常用示例 ssh-copy-id root@192.168.1.100 # 使用默认密钥 ssh-copy-id -i ~/.ssh/id_rsa_blog.pub user@server # 指定密钥 ssh-copy-id -p 2222 user@server # 指定端口 工作原理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 当你运行 ssh-copy-id 时，它做了这些事： 1. 读取本地公钥文件 ├─ 默认：~/.ssh/id_rsa.pub └─ 指定：-i 参数指定的文件 2. 连接到远程服务器 └─ 需要你输入密码（最后一次） 3. 在服务器上执行 mkdir -p ~/.ssh # 创建目录 chmod 700 ~/.ssh # 设置目录权限 cat \u0026gt;\u0026gt; ~/.ssh/authorized_keys # 追加公钥 chmod 600 ~/.ssh/authorized_keys # 设置文件权限 4. 完成 └─ 下次连接不再需要密码 常见选项 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # -i 指定公钥文件 ssh-copy-id -i ~/.ssh/id_rsa_blog.pub root@server # -p 指定端口 ssh-copy-id -p 22022 root@server # -f 强制模式（即使已有密钥也追加） ssh-copy-id -f -i ~/.ssh/id_rsa.pub root@server # -n 试运行（只显示要做什么，不实际执行） ssh-copy-id -n root@server # -o 传递SSH选项 ssh-copy-id -o \u0026#34;StrictHostKeyChecking=no\u0026#34; root@server Windows 用户的解决方案 问题：Windows 默认没有 ssh-copy-id\n解决方案1：安装 Git Bash\nGit for Windows 自带 ssh-copy-id：\n1 2 # 在Git Bash中 ssh-copy-id -i ~/.ssh/id_rsa_blog.pub root@server 多密钥管理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 为不同服务器生成不同密钥 ssh-keygen -t rsa -f ~/.ssh/id_rsa_github ssh-keygen -t rsa -f ~/.ssh/id_rsa_company ssh-keygen -t rsa -f ~/.ssh/id_rsa_blog # 分别上传 ssh-copy-id -i ~/.ssh/id_rsa_github.pub git@github.com ssh-copy-id -i ~/.ssh/id_rsa_company.pub user@company-server ssh-copy-id -i ~/.ssh/id_rsa_blog.pub root@blog-server # 在Config中配置 Host github.com IdentityFile ~/.ssh/id_rsa_github Host company IdentityFile ~/.ssh/id_rsa_company Host blog IdentityFile ~/.ssh/id_rsa_blog 常见问题 1. Permission denied after ssh-copy-id\n1 2 3 4 5 6 7 8 9 10 11 # 检查服务器权限 ssh root@server ls -la ~/.ssh # 应该是： # drwx------ (700) .ssh/ # -rw------- (600) .ssh/authorized_keys # 如果不对，修复： chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 2. Still asking for password\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 检查SSH配置 ssh -v root@server # 查看详细日志 # 可能原因： # - 服务器禁用了密钥认证 # - 使用了错误的密钥 # - SELinux问题（CentOS） # 服务器上检查 sudo vim /etc/ssh/sshd_config # 确保这些配置： PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 3. Too many authentication failures\n1 2 3 4 5 # 原因：密钥太多，SSH尝试了所有密钥 # 解决：在Config中明确指定 Host blog IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_blog 📝 写在最后 SSH看起来复杂，但掌握了就会发现也并不难，这是连接服务器进行开发的基础，切忌囫囵吞枣。\n下次写写在幂律学到的Git工作流，这也是进行企业开发的基础第一步\n","date":"2025-10-10T00:00:00Z","image":"https://huanhe.site/p/ssh-guide/cover_hu_33c61e782f5b97b6.webp","permalink":"https://huanhe.site/p/ssh-guide/","title":"如何SSH远程连接服务器"},{"content":"在使用GitHub和GitLab时，代码仓库的管理和使用对于开发来说很重要，这里分享一下我学到的Git工作流程和实践方法。\nGit基础知识 如果你对Git还不太熟悉 强烈推荐这个学习网站：Learn Git\n这是一个Git学习网站，通过互动式关卡让你理解Git的核心概念。quiz必须拿到18/20 分，也就是说，必须全明白。\nGit基础工作流 日常开发的核心命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 1. 查看状态 git status # 2. 添加文件到暂存区 git add . # 添加所有修改 git add file.txt # 添加指定文件 # 3. 提交 git commit -m \u0026#34;提交信息\u0026#34; # 4. 推送到远程 git push origin main # 5. 拉取最新代码 git pull origin main 分支操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 查看分支 git branch # 本地分支 git branch -a # 所有分支 # 创建并切换分支 git checkout -b feature-name # 或使用新命令 git switch -c feature-name # 切换分支 git checkout main git switch main # 删除分支 git branch -d feature-name # 安全删除 git branch -D feature-name # 强制删除 Git工作流 工作流程 1. 分支策略 1 2 3 4 5 6 main（master） ← 生产环境代码 ↑ develop ← 开发环境代码 ↑ feature/xxx ← 功能开发分支 hotfix/xxx ← 紧急修复分支 分支命名规范：\nfeature/user-login - 功能分支 bugfix/fix-upload - bug修复 hotfix/urgent-fix - 紧急修复 release/v1.0.0 - 发布分支 2. 完整开发流程 第一阶段：初始设置 \u0026amp; 克隆项目\n克隆远程仓库（首次获取项目） git clone cd 项目名\n查看所有分支（本地+远程） git branch -avv\n创建并切换到个人开发分支（基于最新master） git checkout master # 进入主分支 git pull origin master # 更新主分支 git checkout -b name/功能描述 # 创建个人分支\n推送分支并建立跟踪关系（关键步骤！） git push -u origin name/功能描述\n第二阶段：日常开发工作流\n每日开始工作前（必做） git checkout zts/功能描述 # 切换到个人分支 git fetch \u0026ndash;all # 获取所有远程更新 git merge origin/master # 合并主分支最新代码\n开发过程中\u0026hellip;\n修改文件后保存（正常使用编辑器） 查看修改状态 git status\n添加修改到暂存区 git add 文件名 # 添加特定文件 git add . # 添加所有修改（不含删除） git add -A # 添加所有修改（包含删除）\n提交到本地仓库 git commit -m \u0026ldquo;清晰的提交说明\u0026rdquo; 提交说明规范： feat: 新功能 fix: 修复bug docs: 文档更新 refactor: 重构代码 test: 测试用例\n推送代码到远程 git push\nCode Review流程 CR实践 提交PR前的自查\n1 2 3 4 5 6 7 8 # 确保代码格式正确 npm run lint # 运行测试 npm run test # 查看改动 git diff develop PR描述模板\n1 2 3 4 5 6 7 8 9 10 11 12 ## 功能描述 添加了...功能 ## 修改内容 - [ ] 新增...模块 - [ ] 添加单元测试 - [ ] 更新文档 ## 测试说明 ## 相关issue 响应Review意见\n1 2 3 4 # 修改后追加提交 git add . git commit -m \u0026#34;fix: 根据review意见修改\u0026#34; git push origin feature-branch 冲突解决 合并冲突的处理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 1. 拉取最新代码发现冲突 git pull origin develop # Auto-merging file.txt # CONFLICT (content): Merge conflict in file.txt # 2. 查看冲突文件 git status # 3. 手动解决冲突 # 打开文件，会看到： # \u0026lt;\u0026lt;\u0026lt;\u0026lt;\u0026lt;\u0026lt;\u0026lt; HEAD # 你的修改 # ======= # 别人的修改 # \u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt; branch-name # 4. 修改完成后 git add file.txt git commit -m \u0026#34;解决合并冲突\u0026#34; # 5. 推送 git push origin feature-branch 预防冲突的技巧 1 2 3 4 5 6 7 8 # 开发前先同步最新代码 git checkout develop git pull origin develop git checkout feature-branch git rebase develop # 频繁提交，小步快跑 # 及时push，让团队知道你的进度 踩过的坑 1. 不要在主分支直接开发 错误做法：\n1 2 3 git checkout main # 直接在main上改代码 git commit -m \u0026#34;fix bug\u0026#34; 正确做法：\n1 2 3 4 5 git checkout main git checkout -b hotfix/urgent-fix # 在新分支修改 git commit -m \u0026#34;fix: 紧急修复\u0026#34; # 通过PR合并 2. commit信息要有意义 烂提交信息：\n1 2 3 git commit -m \u0026#34;修改\u0026#34; git commit -m \u0026#34;update\u0026#34; git commit -m \u0026#34;fix bug\u0026#34; 好的提交信息：\n1 2 git commit -m \u0026#34;feat(parser): 添加PDF文本提取功能\u0026#34; git commit -m \u0026#34;fix(upload): 修复大于10MB文件上传失败的问题\u0026#34; 3. 不要提交大文件和敏感信息 1 2 3 4 5 6 7 8 # 使用.gitignore echo \u0026#34;*.log\u0026#34; \u0026gt;\u0026gt; .gitignore echo \u0026#34;.env\u0026#34; \u0026gt;\u0026gt; .gitignore echo \u0026#34;node_modules/\u0026#34; \u0026gt;\u0026gt; .gitignore # 如果不小心提交了 git rm --cached sensitive_file git commit -m \u0026#34;移除敏感文件\u0026#34; 4. 定期同步远程仓库 1 2 3 4 5 6 7 # 每天开始工作前 git checkout develop git pull origin develop # 每次开发前 git checkout feature-branch git rebase develop 📝 实用Git别名配置 提高效率的Git快捷命令：\n1 2 3 4 5 6 7 8 9 10 11 # 配置别名 git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.lg \u0026#34;log --graph --oneline --decorate --all\u0026#34; # 使用 git st # 等于 git status git co main # 等于 git checkout main git lg # 漂亮的日志 总结 Git工作流的核心原则 小步提交 - 功能拆分，频繁commit 清晰分支 - 命名规范，职责明确 规范信息 - commit message要有意义 及时同步 - 经常pull，避免冲突 代码审查 - PR流程不能省 最大的感悟：\nGit是团队协作的规范。好的Git使用习惯，能让自己的代码更清晰，也不用背那么多锅QWQ\n下篇写啥好呢？正则还是什么呢，要不不写技术文档了，学到再写，嘿嘿\n","date":"2025-10-07T00:00:00Z","image":"https://huanhe.site/p/git-workflow-guide/cover_hu_88f0f5230f684171.webp","permalink":"https://huanhe.site/p/git-workflow-guide/","title":"Git工作流分享"}]