Git 从入门到精通(开源协作特别版)
🧠 Git 从入门到精通(开源协作特别版)
✅ 基础命令 + 🧰 高级用法 + 🛠️ 开源实战技巧 + 🌍 GitHub 社区协作
适合:从0开始 → 熟练开发者 → 参与/维护开源项目
🔰 第1章:Git 基础与本地操作
1.1 安装与配置
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
1.2 初始化仓库
git init
1.3 添加和提交代码
git add .
git commit -m "第一次提交"
1.4 查看日志与状态
git status
git log
git diff # 查看未提交的差异
git diff --cached # 查看已暂存的差异
🔁 第2章:远程仓库与 GitHub
2.1 添加远程仓库
git remote add origin https://github.com/你/仓库名.git
2.2 推送与拉取代码
git push -u origin master # 第一次推送并绑定
git pull # 拉取远程更改
2.3 .gitignore 文件
忽略不需要上传的文件:
node_modules/
.env
__pycache__/
*.log
🌿 第3章:分支管理与协作
3.1 本地分支操作
git branch new-feature # 创建分支
git checkout new-feature # 切换分支
git merge new-feature # 合并到当前分支
git branch -d new-feature # 删除分支
3.2 遇到冲突怎么办?
- Git 会在冲突文件中插入
<<<<<<<、=======、>>>>>>> - 手动解决后:
git add 冲突文件
git commit
👥 第4章:开源协作场景技巧
📦 4.1 Fork + Clone 模式(开源常用)
- 在 GitHub 上
Fork原项目到自己的账户 - 克隆自己的仓库:
git clone https://github.com/你的用户名/项目名.git
- 添加上游仓库(原作者仓库):
git remote add upstream https://github.com/原作者名/项目名.git
- 获取更新:
git fetch upstream
git merge upstream/main
🔀 4.2 提交 Pull Request(贡献代码流程)
典型的开源项目协作流程:
Fork → 新建分支 → 修改代码 → Commit → Push → 提交 Pull Request
详细步骤:
- 创建新分支:
git checkout -b fix-issue-123
- 修改代码并提交:
git add .
git commit -m "修复了 issue #123"
- 推送到你的远程分支:
git push origin fix-issue-123
- 打开 GitHub 提交 PR(Pull Request) → 填写描述、关联 issue
🛠️ 第5章:开源项目维护实践
5.1 使用 README.md
包含:
- 项目简介
- 安装方式
- 使用方法
- 示例截图或 Demo
- 贡献指南(贡献者如何参与)
- License
5.2 添加 LICENSE
推荐:
- MIT(自由度高,适合个人项目)
- Apache 2.0(商业友好)
- GPL(强制开源)
5.3 编写贡献说明 CONTRIBUTING.md
建议内容:
- 提交 PR 前的步骤
- 分支命名规范
- 代码风格要求
- 是否需要写测试
5.4 提交模板(Issue / PR)
在 .github/ISSUE_TEMPLATE/ 中添加:
- bug_report.yml
- feature_request.yml
5.5 GitHub Actions 自动化
- 自动测试
- 自动构建发布版本
- 自动格式化检查(如 ESLint, black)
💡 第6章:Git 高阶操作
6.1 reset / revert(版本回退)
git reset --soft HEAD^ # 回退上一次提交,保留修改
git reset --hard HEAD^ # 强制回退
git revert 提交ID # 创建新的提交来撤销
6.2 stash(保存现场)
git stash # 暂存当前更改
git stash list
git stash pop # 恢复更改
6.3 Git rebase(清理提交记录)
git rebase main
适合整理提交,让历史更清晰(配合 interactive rebase)
🔐 第7章:安全与敏感信息保护
- 使用
.gitignore忽略.env - 使用 git-secrets 防止提交秘钥
- 如果泄露了秘钥,可使用:
git filter-branch --force --index-filter ...
🌍 第8章:推广和社区建设
8.1 给项目加标签(topics)
如:machine-learning、python、api
8.2 加入开源组织
如 GitHub orgs、开源之夏、OpenCollective
8.3 README 添加徽章(Badges)
- 构建状态
- License
- 下载量
- 开源协议
示例:

🧭 推荐工具
- Git 图形工具:GitKraken / GitHub Desktop / SourceTree
- CLI 增强工具:
tig、lazygit - VS Code 插件:GitLens / Git Graph
📚 附加资源
| 类型 | 资源 |
|---|---|
| 官方文档 | git-scm.com |
| 可视化教程 | learngitbranching.js.org |
| 中文教程 | 廖雪峰 Git 教程 |
| 开源项目指南 | GitHub Docs |
相关文章:
Git 从入门到精通(开源协作特别版)
🧠 Git 从入门到精通(开源协作特别版) ✅ 基础命令 🧰 高级用法 🛠️ 开源实战技巧 🌍 GitHub 社区协作 适合:从0开始 → 熟练开发者 → 参与/维护开源项目 🔰 第1章:…...
spring-cloud-alibaba-nacos-config使用说明
一、核心功能与定位 Spring Cloud Alibaba Nacos Config 是 Spring Cloud Alibaba 生态中的核心组件之一,专为微服务架构提供动态配置管理能力。它通过整合 Nacos 的配置中心功能,替代传统的 Spring Cloud Config,提供更高效的配置集中化管理…...
C# Winform 入门(9)之如何封装并调用dll
封装dll 首先创建 .Net平台 类库 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _09.Encapsulation_dll {public class Program{/// <summary>/// 求两个double类型的数值的和/// &l…...
vue3中ref、reactive的使用示例
ref 1、导入 import { ref } from "vue"; 2、定义 // 报告表格数据 const reportTableData ref<Report[]>([]); 3、赋值 // 获取报告信息 let result await reportDataByOuterApplyIdService(tableSelectedRow.value?.outerApplyId); reportTable…...
【嵌入式系统设计师】知识点:第2章 嵌入式系统硬件基础知识
提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…...
Vue2_Vue.js教程
目录 一、Vue.js安装 1、独立版本 2、CDN 方法 3、npm 方法 二、Vue Al编程助手 三、Vue.js目录结构 目录解析 四、Vue.js 起步 1.如何定义数据对象和方法并渲染进页面 五、Vue.js 模板语法 插值 文本_{{}} Html_v-html 指令 属性_v-bind (数据传输工具)指令 表…...
【工业场景】用YOLOv12实现饮料类别识别
饮料类别识别任务的意义在于帮助人们更快速地识别和区分不同类型的饮料,从而提高消费者的购物体验和满意度。对于商家而言,饮料类别识别可以帮助他们更好地管理库存、优化货架布局和预测销售趋势,从而提高运营效率和利润。此外,饮…...
从小米汽车事故反思 LabVIEW 开发
近期,小米汽车的一起严重事故引发了社会各界的广泛关注。这起事故不仅让我们对智能汽车的安全性产生了深深的思考,也为 LabVIEW 开发领域带来了诸多值得汲取的知识与领悟。 在智能汽车领域,尤其是涉及到智能驾驶辅助系统时,安全是…...
oracle WAIT 和 NOWAIT
在 Oracle 数据库中,WAIT 和 NOWAIT 是与 锁(Lock) 相关的关键选项,用于控制事务或操作在请求资源时的等待行为。以下是它们的详细说明和应用场景。 1. NOWAIT 选项 作用: 当请求资源(如表、行)…...
Vue3+Vite+TypeScript+Element Plus开发-04.静态菜单设计
系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 文章目录 目录 系列文档目录 文章目录 前言 一、Aside设计 二、动态增加菜单 三.布局引用在Main中显示 参考文献: 前言 在本系列文档中&…...
从代码学习深度学习 - LSTM PyTorch版
文章目录 前言一、数据加载与预处理1.1 代码实现1.2 功能解析二、LSTM介绍2.1 LSTM原理2.2 模型定义代码解析三、训练与预测3.1 训练逻辑代码解析3.2 可视化工具功能解析功能结果总结前言 深度学习中的循环神经网络(RNN)及其变种长短期记忆网络(LSTM)在处理序列数据(如文…...
大数据技术发展与应用趋势分析
大数据技术发展与应用趋势分析 文章目录 大数据技术发展与应用趋势分析1. 大数据概述2 大数据技术架构2.1 数据采集层2.2 数据存储层2.3 数据处理层2.4 数据分析层 3 大数据发展趋势3.1 AI驱动的分析与自动化3.2 隐私保护分析技术3.3 混合云架构的普及3.4 数据网格架构3.5 量子…...
与Linux操作系统相关的引导和服务
目录 一.Linux操作系统引导过程 1.1引导过程总览 1.2系统初始化进程 1.2.1init进程 1.2.2sysmted 1.3systemd单元类型 二.排除启动类故障 2.1MBR扇区故障 2.1.1故障原因 2.1.2故障现象 2.1.3解决办法 2.1.4模拟修复MBR扇区故障 1)添加新的硬盘 2)进行…...
STM32单片机入门学习——第16节: [6-4] PWM驱动LED呼吸灯PWM驱动舵机PWM驱动直流电机
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.05 STM32开发板学习——第16节: [6-4] PWM驱动LED呼吸灯&PWM驱动舵机&PWM驱…...
基础框架系列分享:一个通用的Excel报表生成管理框架
由于我们系统经常要生成大量的Excel报表(Word,PDF报表也有,另行分享),最初始他们的方案是,设计一个表,和Excel完全对应,然后读表,把数据填进去,这显然是非常不…...
Ansible(4)—— Playbook
目录 一、Ansible Playbook : 1、Play : 2、Playbook: 二、Ansible Playbook 格式: 1、空格: 2、破折号( - ): 3、Play 格式: 三、查找用于任务的模块: 1、模块…...
自学-C语言-基础-数组、函数、指针、结构体和共同体、文件
这里写自定义目录标题 代码环境:?问题思考:一、数组二、函数三、指针四、结构体和共同体五、文件问题答案: 代码环境: Dev C ?问题思考: 把上门的字母与下面相同的字母相连,线不能…...
Bash 花括号扩展 {start..end} 进阶使用指南——字典生成
Bash 的花括号扩展(brace expansion){start..end} 是一个强大而灵活的语法特性,用于生成特定序列或组合。它在脚本编写、爆破字典生成、文件批量操作以及模式匹配中有着广泛的应用。本文将从基础用法到高级技巧,带你全面掌握这一功…...
AGI大模型(10):prompt逆向-巧借prompt
1 提示词逆向 明确逆向提示词⼯程概念 我们可以给ChatGPT提供⼀个简洁的提示词,让它能够更准确地理解我们所讨论的“逆向提示词⼯程”是什么意思,并通过这个思考过程,帮它将相关知识集中起来,进⽽构建⼀个专业的知识领域 提示词:请你举⼀个简单的例⼦,解释⼀下逆向pro…...
蓝桥云客--团队赛
2.团队赛【算法赛】 - 蓝桥云课 问题描述 蓝桥杯最近推出了一项团队赛模式,要求三人组队参赛,并规定其中一人必须担任队长。队长的资格很简单:其程序设计能力值必须严格大于其他两名队友程序设计能力值的总和。 小蓝、小桥和小杯正在考虑报名…...
C-S模式之实现一对一聊天
天天开心!!! 文章目录 一、如何实现一对一聊天?1. 服务器设计2. 客户端设计3. 服务端代码实现4. 客户端代码实现5. 实现说明6.实验结果 二、改进常见的服务器高并发方案1. 多线程/多进程模型2. I/O多路复用3. 异步I/O(…...
[Deep-ML]Transpose of a Matrix(矩阵的转置)
Transpose of a Matrix(矩阵的转置) 题目链接: Transpose of a Matrix(矩阵的转置)https://www.deep-ml.com/problems/2 题目描述: 难度: easy(简单)。 分类&#…...
Java的Selenium的特殊元素操作与定位之select下拉框
如果页面元素是一个下拉框,我们可以将此web元素封装为Select对象 Select selectnew Select(WebElement element); Select对象常用api select.getOptions();//获取所有选项select.selectBylndex(index);//根据索引选中对应的元素select.selectByValue(value);//选…...
前端精度计算:Decimal.js 基本用法与详解
一、Decimal.js 简介 decimal.js 是一个用于任意精度算术运算的 JavaScript 库,它可以完美解决浮点数计算中的精度丢失问题。 官方API文档:Decimal.js 特性: 任意精度计算:支持大数、小数的高精度运算。 链式调用:…...
智慧节能双突破 强力巨彩谷亚VK系列刷新LED屏使用体验
当前全球节能减排趋势明显,LED节能屏作为显示技术的佼佼者,正逐渐成为市场的新宠。强力巨彩谷亚万境VK系列节能智慧屏凭借三重技术保障、四大智能设计以及大师臻彩画质,在实现节能效果的同时,更在智慧显示领域树立新的标杆。 …...
html 给文本两端加虚线自适应
效果图: <div class"separator">文本 </div>.separator {width: 40%;border-style: dashed;display: flex;align-items: center;color: #e2e2e2;font-size: 14px;line-height: 20px;border-color: #e2e2e2;border-width: 0; }.separator::bef…...
C#:is关键字
目录 is 关键字的核心是什么? 1. 什么是 is 关键字,为什么要用它? 2. 如何使用 is 关键字? 3. is 的作用和场景 4. is 与 as 的区别 5. 模式匹配的扩展(C# 8.0) 6. 常见陷阱和注意事项 总结&#x…...
leetcode4.寻找两个正序数组中的中位数
思路源于 LeetCode004-两个有序数组的中位数-最优算法代码讲解 基本思路是将两个数组看成一个数组,然后划分为两个部分,若为奇数左边部分个数多1,若为偶数左边部分等于右边部分个数。i表示数组1划分位置(i为4是索引4也表示i的左半…...
0101安装matplotlib_numpy_pandas-报错-python
文章目录 1 前言2 报错报错1:ModuleNotFoundError: No module named distutils报错2:ERROR:root:code for hash blake2b was not found.报错3:**ModuleNotFoundError: No module named _tkinter**报错4:UserWarning: Glyph 39044 …...
Qt之QHostInfo
简介 QHostInfo表示主机信息,即主机名称 常用接口 static QHostInfo fromName(const QString &name); QString hostName() const; QList<QHostAddress> addresses() const;结构 #mermaid-svg-HTJ95sEk8JwO4uCy {font-family:"trebuchet ms",…...
