Git 版本控制核心流程与协作指南(从入门到冲突解决)
一、Git 基础配置与初始化
1. 安装与环境配置
-
下载安装:从 Git 官网 下载对应系统版本,默认安装即可(Windows 需勾选“Add Git to PATH”方便终端调用)。
-
全局配置:首次使用需配置用户名和邮箱(用于提交记录标识):
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
-
查看配置:
git config --list
可查看当前所有配置(包括仓库级和全局配置)。
2. 本地仓库初始化
-
将现有项目转为 Git 仓库:进入项目文件夹,执行:
git init # 生成隐藏的 .git 目录(存储版本信息、配置等,勿手动修改)
-
克隆远程仓库到本地:若项目已在远程(如 GitHub),直接克隆:
git clone 远程仓库地址 # 例如:git clone https://github.com/xxx/xxx.git
二、本地与远程仓库的连接
1. 关联远程仓库
-
若本地仓库未关联远程,通过
git remote
命令绑定:git remote add origin 远程仓库地址 # origin 是远程仓库的默认别名,可自定义
-
查看关联:
git remote -v
显示当前远程仓库的 fetch/push 地址。 -
修改关联:若远程地址变更,执行
git remote set-url origin 新地址
。
2. 认证方式(替代明文密码)
-
SSH 密钥:适合长期固定设备,一次配置永久生效:
- 生成密钥对:
ssh-keygen -t rsa -C "你的邮箱"
(一路回车默认生成,私钥存~/.ssh/id_rsa
,公钥存~/.ssh/id_rsa.pub
)。 - 复制公钥内容到远程仓库(如 GitHub 的“SSH and GPG keys”设置中)。
- 远程地址改用 SSH 格式:
[](mailto:git@github.com)[git@github.com](mailto:git@github.com):xxx/xxx.git
。
- 生成密钥对:
-
Token 认证:适合临时或多设备场景,权限可控且可随时作废:
- 在远程仓库(如 GitHub)生成 Personal Access Token(勾选必要权限,如
repo
)。 - 远程地址用 HTTPS 格式,推送时输入 Token 作为密码(部分工具会自动保存凭据)。
- 在远程仓库(如 GitHub)生成 Personal Access Token(勾选必要权限,如
三、Git 核心区域与操作流程
Git 分为四个核心区域,操作流程本质是“区域间的内容传递”:
区域 | 含义 | 关键操作指令 |
---|---|---|
工作区 | 本地可见的项目文件(实际编辑的地方) | 手动修改文件 |
暂存区 | 临时存放待提交的修改(“待办清单”) | git add 文件名 (添加修改到暂存区)、git reset 文件名 (撤销暂存) |
本地仓库 | 存储已提交的版本(本地历史记录) | git commit -m "提交说明" (暂存区 → 本地仓库) |
远程仓库 | 云端仓库(团队共享的版本中心) | git push origin 分支名 (本地仓库 → 远程仓库)、git pull origin 分支名 (远程仓库 → 本地仓库+工作区) |
完整提交流程示例
- 在工作区修改文件(如
index.js
)。 - 将修改添加到暂存区:
git add index.js
(或git add .
添加所有修改)。 - 提交到本地仓库:
git commit -m "fix: 修复登录逻辑漏洞"
。 - 推送到远程仓库:
git push origin main
(假设主分支为main
)。
四、分支管理与协作
1. 分支核心概念
- 主分支:如
main
或master
,存放稳定可发布的代码。 - 功能分支:如
feature/login
,用于开发新功能,基于主分支创建。 - 修复分支:如
fix/bug-001
,用于修复bug,基于主分支创建,修复后合并回主分支。
2. 常用分支命令
-
创建并切换分支:
git checkout -b 分支名
(等价于git branch 分支名
+git checkout 分支名
)。 -
查看分支:
git branch
(本地分支)、git branch -r
(远程分支)。 -
合并分支:将
fix-001
合并到主分支main
:git checkout main # 切换到主分支
git pull origin main # 确保主分支是最新的
git merge fix-001 # 合并修复分支
git push origin main # 推送合并结果
-
删除分支:
git branch -d 分支名
(删除已合并的分支)、git branch -D 分支名
(强制删除未合并分支)。
五、冲突处理(核心难点)
1. 冲突产生的原因
当 两个分支(本地与远程、或两个本地分支)从共同祖先出发,对同一文件的同一部分做了不同修改 时,Git 无法自动判断保留哪部分,就会产生冲突。
2. 冲突处理流程(以 git pull
为例)
-
拉取远程更新时冲突:
git pull origin main # 拉取时提示冲突,冲突文件会被标记
-
查看冲突文件:文件中会出现冲突标记:
<<<<<<< HEAD
本地修改的内容(如:苹果)
=======
远程修改的内容(如:香蕉)
>>>>>>> origin/main
-
解决冲突:
- 手动删除标记符,保留最优内容(可综合两者,如“苹果香蕉”)。
- 或用 IDE 可视化工具(如 IDEA 的“Resolve Conflicts”)勾选保留内容。
-
确认冲突解决:
git add 冲突文件名 # 告诉 Git 冲突已解决,添加到暂存区
git commit # 无需备注,Git 自动生成合并信息
git push origin main # 推送解决后的版本
3. 合并分支时的冲突处理
流程与 git pull
冲突一致:合并时若提示冲突,按上述步骤解决后,执行 git add
→ git commit
完成合并,再推送。
六、关键原理总结
- 版本追溯:Git 通过“节点”记录每次提交,每个节点有唯一 ID(如
a1b2c3d
),可通过git log
查看历史。 - 冲突本质:不是“谁的提交更新”,而是“同一位置有两个不同修改且无继承关系”,需手动确定最终版本。
git pull
与git push
:git pull = git fetch + git merge
(拉取远程并合并到本地)。git push
失败时,通常是本地落后于远程,需先git pull
同步并解决冲突后再推送。
通过以上流程,可实现多人协作中的代码版本控制,核心是“隔离开发、及时同步、合理解决冲突”,熟练后能大幅提升团队开发效率。