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 模式(开源常用)

  1. 在 GitHub 上 Fork 原项目到自己的账户
  2. 克隆自己的仓库:
git clone https://github.com/你的用户名/项目名.git
  1. 添加上游仓库(原作者仓库):
git remote add upstream https://github.com/原作者名/项目名.git
  1. 获取更新:
git fetch upstream
git merge upstream/main

🔀 4.2 提交 Pull Request(贡献代码流程)

典型的开源项目协作流程:

Fork → 新建分支 → 修改代码 → Commit → Push → 提交 Pull Request

详细步骤:

  1. 创建新分支:
git checkout -b fix-issue-123
  1. 修改代码并提交:
git add .
git commit -m "修复了 issue #123"
  1. 推送到你的远程分支:
git push origin fix-issue-123
  1. 打开 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-learningpythonapi

8.2 加入开源组织

如 GitHub orgs、开源之夏、OpenCollective

8.3 README 添加徽章(Badges)

  • 构建状态
  • License
  • 下载量
  • 开源协议

示例:

![MIT License](https://img.shields.io/github/license/xxx/project.svg)

🧭 推荐工具

  • Git 图形工具:GitKraken / GitHub Desktop / SourceTree
  • CLI 增强工具:tiglazygit
  • VS Code 插件:GitLens / Git Graph

📚 附加资源

类型资源
官方文档git-scm.com
可视化教程learngitbranching.js.org
中文教程廖雪峰 Git 教程
开源项目指南GitHub Docs

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SQL】取消sql某一列的唯一值key值的方法

在插入数据到sql时&#xff0c;遇到了这个问题&#xff1a; Duplicate entry ‘XXX’ for key 起因是&#xff1a; 我之前设计表的时候&#xff0c;手动给product_title 这个列加了一个key&#xff0c; key 是这个字段的唯一键约束&#xff0c;就不能重复在这一列存入重复的数…

【小沐学Web3D】three.js 加载三维模型(React Three Fiber)

文章目录 1、简介1.1 Three.js1.2 React Three Fiber 2、测试2.1 初始化环境2.2 app.js修改&#xff08;显示内置立方体&#xff09;2.3 app.js修改&#xff08;显示内置球体&#xff09;2.4 app.js修改&#xff08;显示自定义立方体&#xff09;2.5 app.js修改&#xff08;显示…

本地部署 Firecrawl 爬虫让 AI 知识库更丰满

https://www.firecrawl.dev/ firecrawl-logo-with-fire.png 什么是Firecrawl Firecrawl 是一款 可以将网站转换为 便于AI处理的Markdown 格式的爬虫工具 &#xff0c;主要 提供 API 服务 &#xff0c;无需站点地图&#xff0c;只需要接收一个 URL 地址就可以爬取网站及网站下可…

纯个人整理,蓝桥杯使用的算法模板day2(0-1背包问题),手打个人理解注释,超全面,且均已验证成功(附带详细手写“模拟流程图”,全网首个

算法索引 01背包优化前空间优化版&#xff08;使用一维数组&#xff09;优化后的模拟流程图为何优化后&#xff0c;j不能使用正序遍历模拟流程图 代码对应实现案例 01背包 优化前 /*** 0-1背包问题解法&#xff08;与下方代码表格示例对应&#xff0c;已模拟验证&#xff09;*…

APang网联科技项目报告【服务器篇】

APang网联科技&#xff1a;连接未来&#xff0c;智能领航 公司简介 APang网联科技成立于 [2005年]&#xff0c;总部位于 [广东深圳]&#xff0c;是一家集网络技术研发、系统集成、项目实施与运维服务为一体的高新技术企业。我们致力于为客户提供全方位、定制化的网络部署解决…

Scade One - 将MBD技术从少数高安全领域向更广泛的安全嵌入式软件普及

Scade One是继Scade Suite version 6自2008年起发展近20年后的首次主要改进版本。在Scade One发布的同时&#xff0c;Scade团队发布了一系列介绍Scade One的博客。本篇Scade One - Democratizing model-based development是其中的一部分。在后面的内容中&#xff0c;将复述博客…

Word在生成PDF后,PDF左侧导航书签目录错误显示的解决方法

1、打开要转换的word文件&#xff0c;点击“开始”&#xff0c;“另存为” 2、保存在本地时&#xff0c;在“保存类型”的下拉列表中选择“PDF&#xff08;*.pdf&#xff09;” 3、选择完保存类型后&#xff0c;点击“选项”按钮 4、在弹出的“选项”框中&#xff0c;选择“创建…

Windows系统服务器安装Office Online Server

服务器配置 配置参数OSThe 64-bit edition of Windows Server 2016CPU4RAM8GNetwork开启Hard disk80GPort80, 443, 809 执行命令 PowerShell中添加Windows服务&#xff1a; Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,…

【小沐学Web3D】three.js 加载三维模型(Angular)

文章目录 1、简介1.1 three.js1.2 angular.js 2、three.js Angular.js结语 1、简介 1.1 three.js Three.js 是一款 webGL&#xff08;3D绘图标准&#xff09;引擎&#xff0c;可以运行于所有支持 webGL 的浏览器。Three.js 封装了 webGL 底层的 API &#xff0c;为我们提供了…

简单程序语言理论与编译技术·22 实现一个从AST到RISCV的编译器

本文是记录专业课“程序语言理论与编译技术”的部分笔记。 LECTURE 22&#xff08;实现一个从AST到RISCV的编译器&#xff09; 一、问题分析 1、完整的编译器&#xff08;如LLVM&#xff09;需先完成AST到IR的转换&#xff0c;并进行代码优化&#xff0c;再到汇编&#xff0…

JavaWeb 课堂笔记 —— 02 JavaScript

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…

Python 如何高效实现 PDF 内容差异对比

Python 如何高效实现 PDF 内容差异对比 1. 安装 PyMuPDF 库2. 获取 PDF 内容通过文件路径获取通过 URL 获取 3. 提取 PDF 每页信息4. 内容对比metadata 差异文本对比可视化对比 5. 提升对比效率通过哈希值快速判断页面是否相同早停机制多进程机制 6. 其他 最近有接触到 PDF 内容…

OpenGL学习笔记(简介、三角形、着色器、纹理、坐标系统、摄像机)

目录 简介核心模式与立即渲染模式状态机对象GLFW和GLAD Hello OpenGLTriangle 三角形顶点缓冲对象 VBO顶点数组对象 VAO元素缓冲对象 EBO/ 索引缓冲对象 IEO 着色器GLSL数据类型输入输出Uniform 纹理纹理过滤Mipmap 多级渐远纹理实际使用方式纹理单元 坐标系统裁剪空间 摄像机自…

MIPI与DVP接口摄像头:深度解析与应用指南

1、MIPI 1.1 MIPI简介 MIPI是什么&#xff1f;MIPI&#xff1a;mobile industry processor interface移动行业处理器接口。它是一个由Intel、Motorola、Nokia、NXP、Samsung、ST&#xff08;意法半导体&#xff09;和TI&#xff08;德州仪器&#xff09;等公司发起的开放标准…

35信号和槽_信号槽小结

Qt 信号槽 1.信号槽是啥~~ 尤其是和 Linux 中的信号进行了对比&#xff08;三要素&#xff09; 1) 信号源 2) 信号的类型 3)信号的处理方式 2.信号槽 使用 connect 3.如何查阅文档. 一个控件&#xff0c;内置了哪些信号&#xff0c;信号都是何时触发 一…

6547网:蓝桥STEMA考试 Scratch 试卷(2025年3月)

『STEMA考试是蓝桥青少教育理念的一部分&#xff0c;旨在培养学生的知识广度和独立思考能力。考试内容主要考察学生的未来STEM素养、计算思维能力和创意编程实践能力。』 一、选择题 第一题 运行下列哪个程序后&#xff0c;飞机会向左移动&#xff1f; ( ) A. …

使用 Python 爬取并打印双色球近期 5 场开奖数据

使用 Python 爬取并打印双色球近期 5 场开奖数据 前期准备安装所需库 完整代码代码解析 1. 导入必要的库2. 定义函数 get_recent_five_ssq 3. 设置请求的 URL 和 Headers 4. 发送请求并处理响应5. 解析 HTML 内容6. 提取并打印数据7. 错误处理 首先看下运行的效果图&#xff1a…

前端快速入门学习3——CSS介绍与选择器

1.概述 CSS全名是cascading style sheets,中文名层叠样式表。 用于定义网页样式和布局的样式表语言。 通过 CSS&#xff0c;你可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式&#xff0c;从而实现更精确的页面设计。 HTML与CSS的关系&#xff1a;HTML相当…

JVM 内存区域详解

JVM 内存区域详解 Java 虚拟机&#xff08;JVM&#xff09;的内存区域划分为多个部分&#xff0c;每个部分有特定的用途和管理机制。以下是 JVM 内存区域的核心组成及其功能&#xff1a; 一、运行时数据区&#xff08;Runtime Data Areas&#xff09; 1. 线程共享区域 内存…

基于SpringBoot的水产养殖系统【附源码】

基于SpringBoot的水产养殖系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 总体功能 4.2 系统模块设计 4.3 数据库设计 4.3.1 数据库设计 4.3.2 数据库E-R 图 4.3.3 数据库表设计 5 系统实现 5.1 管理员功能模块的实…