news 2026/5/23 23:51:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 的分支(基于当前 HEAD)
3. 切换分支
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

使用建议

  • 未提交的代码不要带着切换分支,先stashcommit

  • stash适合临时保存,长期保存应提交到分支


第四部分:远程仓库

一、SSH 密钥配置

远程仓库通过 SSH 密钥验证身份,需要先配置密钥对。

# 1. 生成 SSH 密钥对
ssh-keygen -t rsa -C "your_email@example.com"
# 连续回车使用默认路径,不设密码

# 2. 查看公钥(复制全部内容)
cat ~/.ssh/id_rsa.pub

# 3. 将公钥添加到 Gitee/GitHub 的 SSH 公钥设置中

# 4. 测试连通性
ssh -T git@gitee.com # Gitee
ssh -T git@github.com # GitHub
# 成功提示:successfully authenticated

二、克隆与推送

# 克隆远程仓库到本地
git clone git@gitee.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到远程仓库。多人协作时先pullpush,遇到冲突手动解决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 23:42:38

从Java全栈开发到云原生:一次真实的面试对话与技术剖析

从Java全栈开发到云原生&#xff1a;一次真实的面试对话与技术剖析 面试场景回顾 在一次真实的互联网大厂Java全栈开发岗位的面试中&#xff0c;面试官和应聘者展开了一场围绕技术栈、项目经验和系统设计的深入交流。面试官以专业严谨的态度&#xff0c;逐步引导应聘者展示其技…

作者头像 李华
网站建设 2026/5/23 23:42:33

滑膜观测器代码及参数取值说明

1、滑膜观测器源原理基于BLDC(无刷电机)/PMSM(永磁同步电机)在αβ坐标系下的电压方程&#xff1a;di_alpha/dt (-Rs/Ld)*i_alpha (Ualpha - Ealpha)/Lddi_beta/dt (-Rs/Ld)*i_beta (Ubeta - Ebeta)/Ld 其中Ealpha、Ebeta为αβ轴反电动势&#xff0c;包含转子速度和位置…

作者头像 李华
网站建设 2026/5/23 23:37:59

开发商做一套售楼处数字沙盘 多少钱 都包含什么

经常有开发商朋友算不清楚账&#xff1a;效果图花了一笔、宣传片花了一笔、电子沙盘花了一笔、VR样板间又花了一笔&#xff0c;加起来一看二三十万出去了。分开看每一项都不贵&#xff0c;加起来觉得肉疼。但如果你从"客户看房到底需要看到什么"这个角度往回推&#…

作者头像 李华
网站建设 2026/5/23 23:37:57

实测最新 Gemini-3.5,对比 DeepSeek-V4、GPT-5.5,结果出人意料!

你好&#xff0c;我是郭震历经近半年&#xff0c;Gemini 从 3 升级到了 3.5&#xff0c;并且这次只发布 了 3.5 Flash&#xff0c;号称已超越自家 3.1 Pro&#xff0c;今天对比实测下&#xff0c;感兴趣可以看看。1 Gemini 3.5 Flash 先看Card报告评分&#xff1a;在 Coding 上…

作者头像 李华
网站建设 2026/5/23 23:36:55

AWS RDS 全解析:能力剖析与价格深度分析

引言:云数据库的基石 在云计算时代,数据库即服务(DBaaS)已成为企业构建现代化应用架构的默认选择。作为全球云计算的领导者,亚马逊 AWS 提供的 关系型数据库服务(Amazon RDS),无疑是这一领域的标杆产品。它不仅仅是一个托管的数据库引擎,更是一个集高可用、可扩展、安…

作者头像 李华
网站建设 2026/5/23 23:32:43

Vitis HLS优化指令与iDSE智能设计空间探索框架解析

1. Vitis HLS优化指令体系解析在FPGA硬件加速领域&#xff0c;高层次综合(HLS)技术通过将算法级的C/C描述自动转换为寄存器传输级(RTL)设计&#xff0c;大幅提升了开发效率。作为Xilinx推出的HLS工具链&#xff0c;Vitis HLS提供了三类核心优化指令&#xff0c;它们共同构成了硬…

作者头像 李华