> 技术文档 > 教你快速上手Git

教你快速上手Git

Git是流行的分布式版本控制系统,能够高效地管理各种规模的项目代码,追踪文件的修改历史,支持多人合作,是程序员必备的工具之一。



一、什么是版本控制

版本控制是一种记录文件(或项目)内容变化的系统,方便追溯历史版本,恢复误删文件,多人协同修改同一文件等。

常见的版本控工具包括Git,SVN(集中式),CVS等,而Git因分布式,高效灵活等特点成为主流。



二、Git、SVN、CVS的联系与区别

2.1 联系

Git、SVN、CVS三者都是版本控制系统,核心目的都是:

  1. 历史追踪:记录文件修改的全生命周期(何时修改,由谁修改,修改内容)

  2. 协作支持:允许多用户同时开发,提供合并,冲突解决等协作机制

  3. 版本回溯:支持恢复到任意历史版本,避免因错误操作导致代码丢失

2.2 区别

对比维度

Git

SVN

CVS

系统架构

分布式

每个用户拥有完整仓库和版本历史

集中式

依赖中央服务器存储全部数据

集中式

中央服务器为唯一权威版本源

数据存储的方式

基于快照

存储文件整体的状态

记录文件的差异

仅保存最新版本,历史版本仅保留差异

分支管理

轻量级分支,创建/合并速度快

分支生成完整目录副本,操作成本高

分支支持有限,操作复杂且效率低

网络依赖

本地操作无需联网,仅同步时需要连接远程仓库

提交,拉取等操作依赖中央服务器

所有操作需要连接中央服务器

历史记录的完整性

完整保存所有修改版本,便于精细回溯

仅记录文件变更记录,历史追溯能力有限

历史信息简单,回退版本可难丢失中间过程

安全性

基于SHA-1哈希校验,数据不可篡改

依赖中央服务器的权限管理

基础权限控制,完全性较弱

应用场景

开源项目,分布式团队协作,高频迭代项目

企业内部传统项目管理,需要严格控制权限的场景

遗留系统维护,逐步被SVN/Git替代



三、Git的核心特点

  • 分布式:每个开发者的本地都会有完整的仓库(包含所有的历史版本),无需依赖中央服务器,断网时仍可提交代码

  • 数据完整性:Git对所有文件和操作都通过SHA-1哈希算法生成唯一校验值,确保数据不被篡改

  • 高效分支:创建,切换,合并分支的成本极低,支持并行开发

  • 离线工作:大部分操作(如提交,分支管理)可在本地完成,仅同步时需要网络



四、Git的核心概念和工作区域

Git的核心是通过四个区域管理文件状态的

区域

定义

对应操作

工作区

本地电脑中能直接编辑的文件目录(项目文件夹)

手动修改文件(如编辑代码)

暂存区

临时存储待提交的修改(也叫“索引”),位于.git/index文件中

git add(将工作区修改添加到暂存区)

git reset Head filename(从暂存区移除)

本地仓库

存储所有版本历史的数据库,位于.git文件夹中(隐藏目录)

git commit(将暂存区内容提交到本地仓库)

远程仓库

托管在服务器上的仓库(如GitHub,GitLab),用于多人共享代码

git push(本地仓库的代码推送到远程仓库)

git pull(远程仓库的代码拉取到本地)



五、Git的工作流程

工作流程:初始化--->修改--->暂存--->提交--->同步

步骤一:初始化或克隆仓库

  • 新建项目:在本地文件夹中执行git init,生成.git目录(初始化本地仓库)

  • 已有远程仓库:用git clone 远程仓库地址 讲远程仓库的代码克隆到本地(自动关联远程仓库)



步骤二:修改

编辑代码,新增/删除文件等



步骤三:暂存

将修改添加到暂存区

  • 执行git add filename(指定文件添加到暂存区)或git add .(添加所有的修改),将工作区的修改暂存



步骤四:提交

将暂存区的修改提交到本地仓库

  • 执行git commit -m \"提交的说明\",将暂存区的修改永久保存到本地仓库,生成一个新的版本(用SHA-1哈希标识)



步骤五:同步

将本地仓库中的内容同步到远程仓库中

  • git push -u origin feature(将本地仓库中的内容同步到远程的feature分支,-u 关联分支,后续可以直接git push,默认推送到feature分支)

注意:推送前,先拉取他人提交,避免冲突使用git pull命令



六、Git常用命令详解

6.1 基础状态查看

  • git status:查看工作区,暂存区的状态(哪些文件被修改,为暂存,未跟踪等)

  • git diff:查看工作区与暂存区的差异(未add的修改)

  • git diff --staged:查看暂存区与本地仓库的差异(已add但未commit的修改)



6.2 提交历史查看

  • git commit -m \"描述\":提交暂存区到本地仓库,-m后面是提交的说明(必须写)

  • git commit -am \"描述\":跳过暂存区,直接提交工作区中已跟踪的文件

  • git log:查看提交历史(按照时间倒序,显示哈希,作者,时间,描述)

  • git log --online:简化显示(一行只显示一个提交)

  • git log --graph --oneline(图形化展示分支合并历史)



6.3 分支管理*

分支是Git最强的功能,用于隔离不同开发任务(如同学A在开发新功能,同学B在修复老功能的Bug)

核心命令:

  • git branch:查看所有本地分支

  • git branch 分支名:创建新的分支

  • git switch/checkout 分支名:切换到指定分支

  • git branch -d 分支名:删除已合并的分支(强制删除用-D)

  • git merge 分支名:将制定的分支合并到当前分支(例如在main/master分支上执行git merge feature,合并新功能)



6.4 远程仓库操作

  • git remote:查看已关联的远程仓库

  • git remote -v:查看已关联的远程仓库并显示详细地址

  • git remote add 远程仓库名 地址:关联远程仓库(如git remote add origin https://xxxxxxx,origin是远程仓库的默认别名)

  • git push 远程仓库名 分支名:推送本地分支到远程仓库

  • git pull 远程仓库名 分支名:拉取远程仓库分支并合并到本地当前分支(等价于git fetch+git merge)

  • git fetch:拉取远程最新的代码到本地,但不合并,可先查看差异再决定是否合并