当前位置: 首页 > news >正文

Git 版本控制完全指南:从分支管理到远程协作

引言在前面的文章中我们学习了 Linux 环境下的各种编程技术。然而无论是个人项目还是团队协作代码版本管理都是不可或缺的核心技能。Git 是目前最流行的分布式版本控制系统。它不仅能记录每一次代码变更、回溯任意历史版本还能通过分支机制让多人并行开发互不干扰。本文将从 Git 的核心概念出发系统讲解分支管理、远程仓库协作、冲突解决等实用技能。第一部分Git 基础概念一、四个工作区区域作用命令数据存储位置工作区编写代码—项目文件夹暂存区挑选要提交的修改git add.git/index本地仓库保存版本历史git commit.git/objects远程仓库云端协作git push服务器二、初始化与首次提交# 1. 创建项目文件夹 mkdir my_project cd my_project # 2. 初始化 Git 仓库生成 .git 隐藏文件夹 git init # 3. 配置用户名和邮箱首次使用必须配置 git config --global user.name 你的名字 git config --global user.email 你的邮箱 # 4. 创建文件并编写代码 vim main.c # 5. 添加到暂存区 git add main.c # 6. 提交到本地仓库 git commit -m 版本1创建主函数 # 7. 查看提交历史 git log三、代码提交流程第二部分分支管理一、什么是分支分支是 Git 最强大的特性之一。它允许你从主线上分叉出一条独立的开发线在上面自由修改而不影响主线完成后再合并回去。为什么要用分支场景不用分支用分支开发新功能在主线上改改坏了全完在 dev 分支上改改坏了删掉重来修复 bug暂停新功能开发切到 hotfix 分支修复两不耽误多人协作互相覆盖代码各干各的最后合并版本发布不知道哪个版本稳定master 永远是稳定版本二、分支操作命令1. 查看分支git branch # 查看所有本地分支当前分支前有 * 号git branch -a # 查看所有分支包括远程2. 创建分支git branch dev # 创建名为 dev 的分支基于当前 HEAD3. 切换分支git checkout dev # 切换到 dev 分支 git switch dev # Git 2.23 新命令功能相同切换分支时工作区会随之改变——不同分支的文件内容可能完全不同。4. 创建并切换git checkout -b feature # 创建 feature 分支并立即切换过去git switch -c feature # Git 2.23 等效命令5. 删除分支git branch -d dev # 删除已合并的分支 git branch -D dev # 强制删除即使未合并 # 注意不能删除当前所在的分支三、合并分支# 1. 先切换到目标分支通常是要保留的主分支git checkout master# 2. 合并 dev 分支到当前分支git merge dev两种合并方式四、查看提交历史git log # 完整历史git log --oneline # 单行简版git log --graph # 图形化显示分支结构git log --graph --oneline # 组合使用最常用git reflog # 查看所有操作记录包括已删除的分支第三部分保护现场一、问题场景你正在dev分支开发新功能代码写了一半还没提交。突然master分支有个紧急 bug 需要修复。直接切换分支Git 会阻止或导致未提交的修改被覆盖。解决方案使用git stash暂存工作现场。二、stash 操作# 1. 暂存当前修改代码藏起来git stash# 2. 现在工作区干净了可以自由切换分支git checkout master# ... 修复 bug提交 ...# 3. 回到原分支git checkout dev# 4. 恢复暂存的修改git stash pop# 5. 查看暂存列表git stash list使用建议未提交的代码不要带着切换分支先stash或commitstash适合临时保存长期保存应提交到分支第四部分远程仓库一、SSH 密钥配置远程仓库通过 SSH 密钥验证身份需要先配置密钥对。# 1. 生成 SSH 密钥对ssh-keygen -t rsa -C your_emailexample.com# 连续回车使用默认路径不设密码# 2. 查看公钥复制全部内容cat ~/.ssh/id_rsa.pub# 3. 将公钥添加到 Gitee/GitHub 的 SSH 公钥设置中# 4. 测试连通性ssh -T gitgitee.com # Giteessh -T gitgithub.com # GitHub# 成功提示successfully authenticated二、克隆与推送# 克隆远程仓库到本地git clone gitgitee.com:username/repo.git# 进入项目目录cd repo# 修改代码后提交git add .git commit -m 修改说明# 先拉取远程最新代码防止冲突git pull# 推送到远程git push origin master# 或简写git push三、拉取远程更新# 拉取并合并远程代码git pull origin master# 如果远程没有更新# 输出Already up to date.推送前一定先pull这是团队协作的第一准则。第五部分合并冲突一、冲突是怎么产生的当两个人修改了同一个文件的同一行Git 无法自动判断该保留谁的版本就会产生冲突。二、冲突标记冲突文件会被 Git 标记成这样 HEAD 这里是你的代码本地版本 这里是远程的代码别人推送的版本 commit_hash三、解决冲突# 1. 拉取远程代码发现冲突git pull# 2. 手动编辑冲突文件删除冲突标记vim main.c# 保留需要的代码删除 , , # 3. 标记冲突已解决git add main.c# 4. 提交合并结果git commit -m 解决合并冲突# 5. 推送到远程git push冲突解决的本质Git 只是把两种修改都列出来最终决定权在开发者手里——你需要判断哪些代码该保留。第六部分常用命令速查命令作用git init初始化本地仓库git clone url克隆远程仓库git status查看工作区状态git add file添加文件到暂存区git commit -m msg提交到本地仓库git push推送到远程仓库git pull拉取远程更新git branch查看分支列表git branch name创建分支git checkout name切换分支git checkout -b name创建并切换分支git merge name合并分支到当前分支git branch -d name删除分支git stash暂存工作现场git stash pop恢复暂存git log查看提交历史git log --oneline --graph图形化查看分支历史git reflog查看所有操作记录git diff查看工作区与暂存区的差异总结一、核心概念概念本质工作区写代码的文件夹暂存区挑选要提交的修改本地仓库.git 文件夹存储版本历史远程仓库GitHub/Gitee 云端存储分支指向某个提交的指针HEAD指向当前分支的指针二、核心工作流三、一句话记忆Git 用四个区域管理代码版本用分支实现并行开发互不干扰。工作区写代码git add到暂存区git commit到本地仓库git push到远程仓库。多人协作时先pull再push遇到冲突手动解决。
http://www.zskr.cn/news/1361542.html

相关文章:

  • 在Node.js后端服务中集成Taotoken调用AI模型的最佳实践
  • 从零入门 OpenAI Codex|登录、权限、终端、记忆配置全实操
  • 企业部署文件加密系统后,员工嫌卡顿怎么办?我们这样优化策略
  • 号卡联盟官方邀请码应该填什么?实测填写16888注册一级代理全网佣金最高0抽成 - 流量卡代理招商
  • 解决华硕灵耀X双屏Linux下扬声器不工作的问题
  • 2026清远搬厂公司费用明细 + 避坑指南(含精密设备 红木搬运) - 从来都是英雄出少年
  • 【Linux驱动开发】第12天:Linux设备树核心:树形结构+节点+属性 完整全解
  • 滑膜观测器代码及参数取值说明
  • 2025大厂Java后端面试:RAG高频考点【干货】
  • 暹罗外卖 2.0 主要更新
  • 知识图谱在真实业务场景落地实践
  • 技术债务管理:平衡开发速度与代码质量
  • 腾讯混元全新翻译模型Hy-MT2开源,小程序「腾讯Hy翻译」开放体验
  • 如何快速下载微信视频号、抖音、小红书等平台资源?这款开源工具帮你搞定!
  • 如何用开源工具实现自动化硬件适配?OpCore-Simplify让跨平台部署变得简单
  • COMET神经网络翻译评估框架:架构设计与技术实现深度解析
  • 抖音下载神器:5步掌握批量下载的终极指南
  • Java并发编程:ReentrantLock与AQS原理剖析
  • 从 MacBook Air 到机器人:Caitlin Kalinowski 谈「硬件只有五次编译机会」
  • gcc下载地址
  • 开发商做一套售楼处数字沙盘 多少钱 都包含什么
  • 共享内存(零拷贝)** —— 这是 PyTorch 和 NumPy 之间最高效的特殊机制!
  • SQL 能包打天下吗?多少比例的产品只需 SQL,何时需要引入其他存储?
  • 实际开发中 SQL 与产品的耦合与互动实践
  • 三亚夜市哪家最有特色 - 资讯纵览
  • 非结构化上下文演化下基于上下文老虎机的在线多LLM选择
  • 混合精度优化在LLM推理加速中的实践与调优
  • 电商内容破局:易元AI爆款复刻Agent,抄结构而非抄内容,高效打造高转化素材
  • 解决Flex浮动许可证导致的Arm编译器构建延迟问题
  • 清远厂房搬家公司哪家专业靠谱?TOP5收费标准与避坑指南 - 从来都是英雄出少年