Git 版本控制核心流程与协作指南(从入门到冲突解决)

一、Git 基础配置与初始化

1. 安装与环境配置

  • 下载安装 :从 Git 官网 下载对应系统版本,默认安装即可(Windows 需勾选"Add Git to PATH"方便终端调用)。

  • 全局配置:首次使用需配置用户名和邮箱(用于提交记录标识):

    1. git config --global user.name "你的用户名"
    2. git config --global user.email "你的邮箱"
  • 查看配置git config --list 可查看当前所有配置(包括仓库级和全局配置)。

2. 本地仓库初始化

  • 将现有项目转为 Git 仓库:进入项目文件夹,执行:

    1. git init # 生成隐藏的 .git 目录(存储版本信息、配置等,勿手动修改)
  • 克隆远程仓库到本地:若项目已在远程(如 GitHub),直接克隆:

    1. git clone 远程仓库地址 # 例如:git clone https://github.com/xxx/xxx.git

二、本地与远程仓库的连接

1. 关联远程仓库

  • 若本地仓库未关联远程,通过 git remote 命令绑定:

    1. git remote add origin 远程仓库地址 # origin 是远程仓库的默认别名,可自定义
  • 查看关联git remote -v 显示当前远程仓库的 fetch/push 地址。

  • 修改关联 :若远程地址变更,执行 git remote set-url origin 新地址

2. 认证方式(替代明文密码)

  • SSH 密钥:适合长期固定设备,一次配置永久生效:

    1. 生成密钥对:ssh-keygen -t rsa -C "你的邮箱"(一路回车默认生成,私钥存 ~/.ssh/id_rsa,公钥存 ~/.ssh/id_rsa.pub)。
    2. 复制公钥内容到远程仓库(如 GitHub 的"SSH and GPG keys"设置中)。
    3. 远程地址改用 SSH 格式:[](mailto:git@github.com)[git@github.com](mailto:git@github.com):xxx/xxx.git
  • Token 认证:适合临时或多设备场景,权限可控且可随时作废:

    1. 在远程仓库(如 GitHub)生成 Personal Access Token(勾选必要权限,如 repo)。
    2. 远程地址用 HTTPS 格式,推送时输入 Token 作为密码(部分工具会自动保存凭据)。

三、Git 核心区域与操作流程

Git 分为四个核心区域,操作流程本质是"区域间的内容传递":

区域 含义 关键操作指令
工作区 本地可见的项目文件(实际编辑的地方) 手动修改文件
暂存区 临时存放待提交的修改("待办清单") git add 文件名(添加修改到暂存区)、git reset 文件名(撤销暂存)
本地仓库 存储已提交的版本(本地历史记录) git commit -m "提交说明"(暂存区 → 本地仓库)
远程仓库 云端仓库(团队共享的版本中心) git push origin 分支名(本地仓库 → 远程仓库)、git pull origin 分支名(远程仓库 → 本地仓库+工作区)

完整提交流程示例

  1. 在工作区修改文件(如 index.js)。
  2. 将修改添加到暂存区:git add index.js(或 git add . 添加所有修改)。
  3. 提交到本地仓库:git commit -m "fix: 修复登录逻辑漏洞"
  4. 推送到远程仓库:git push origin main(假设主分支为 main)。

四、分支管理与协作

1. 分支核心概念

  • 主分支 :如 mainmaster,存放稳定可发布的代码。
  • 功能分支 :如 feature/login,用于开发新功能,基于主分支创建。
  • 修复分支 :如 fix/bug-001,用于修复bug,基于主分支创建,修复后合并回主分支。

2. 常用分支命令

  • 创建并切换分支git checkout -b 分支名(等价于 git branch 分支名 + git checkout 分支名)。

  • 查看分支git branch(本地分支)、git branch -r(远程分支)。

  • 合并分支 :将 fix-001 合并到主分支 main

    1. git checkout main # 切换到主分支
    2. git pull origin main # 确保主分支是最新的
    3. git merge fix-001 # 合并修复分支
    4. git push origin main # 推送合并结果
  • 删除分支git branch -d 分支名(删除已合并的分支)、git branch -D 分支名(强制删除未合并分支)。

五、冲突处理(核心难点)

1. 冲突产生的原因

两个分支(本地与远程、或两个本地分支)从共同祖先出发,对同一文件的同一部分做了不同修改 时,Git 无法自动判断保留哪部分,就会产生冲突。

2. 冲突处理流程(以 git pull 为例)

  1. 拉取远程更新时冲突

    1. git pull origin main # 拉取时提示冲突,冲突文件会被标记
  2. 查看冲突文件:文件中会出现冲突标记:

    1. <<<<<<< HEAD
    2. 本地修改的内容(如:苹果)
    3. =======
    4. 远程修改的内容(如:香蕉)
    5. >>>>>>> origin/main
  3. 解决冲突

    • 手动删除标记符,保留最优内容(可综合两者,如"苹果香蕉")。
    • 或用 IDE 可视化工具(如 IDEA 的"Resolve Conflicts")勾选保留内容。
  4. 确认冲突解决

    1. git add 冲突文件名 # 告诉 Git 冲突已解决,添加到暂存区
    2. git commit # 无需备注,Git 自动生成合并信息
    3. git push origin main # 推送解决后的版本

3. 合并分支时的冲突处理

流程与 git pull 冲突一致:合并时若提示冲突,按上述步骤解决后,执行 git addgit commit 完成合并,再推送。

六、关键原理总结

  1. 版本追溯 :Git 通过"节点"记录每次提交,每个节点有唯一 ID(如 a1b2c3d),可通过 git log 查看历史。
  2. 冲突本质:不是"谁的提交更新",而是"同一位置有两个不同修改且无继承关系",需手动确定最终版本。
  3. git pullgit push
    • git pull = git fetch + git merge(拉取远程并合并到本地)。
    • git push 失败时,通常是本地落后于远程,需先 git pull 同步并解决冲突后再推送。

通过以上流程,可实现多人协作中的代码版本控制,核心是"隔离开发、及时同步、合理解决冲突",熟练后能大幅提升团队开发效率。

相关推荐
火车叼位1 小时前
Git 历史清理实践:彻底移除误提交的 node_modules
git
火车叼位1 小时前
用git filter-repo轻松清理Git仓库历史的详细教程
git
Lily55_Li3 小时前
Git标准化开发流程
git
Revol_C5 小时前
【Git 操作笔记】第1期--云代码仓库更换服务商,本地如何批量更新对应项目的git地址(持续更新...)
前端·git
猫头虎6 小时前
开源协议区别与限制详解:Fork、改名、再发布是否合法?(MIT、Apache、GPL、BSD、SSPL、BSL)
git·开源·github·apache·开源软件·开源协议·gitcode
Kiri霧16 小时前
Git入门
git
Nejosi_念旧17 小时前
git报错解决:ssh: connect to host github.com port 22: Connection refused
git·ssh·github
你的人类朋友17 小时前
说说git的变基
前端·git·后端
程序设计实验室18 小时前
在Windows上将git与ssh-agent搭配使用,再也不用输入git密码了
windows·git