Git 是什么
基础概念
Git 是什么
Git 是一个 分布式版本控制系统(DVCS),用于跟踪文件的修改记录,尤其适合团队协作开发代码。
核心概念
仓库(Repository)
提交(Commit)
分支(Branch)
暂存区(Staging Area / Index)
HEAD 指针
Git 与 GitHub / GitLab / Gitee 的关系
Git(核心工具)
定义:分布式版本控制系统(DVCS),用于在本地和远程管理代码的版本历史。
作用:
跟踪文件修改历史
支持分支管理、合并、回滚
提供本地仓库和远程仓库操作接口
GitHub / GitLab / Gitee(平台/服务)
定义:基于 Git 的 代码托管平台,提供远程仓库和协作功能。
功能:
远程仓库托管:保存 Git 仓库,可与团队成员共享代码
协作工具:Pull Request / Merge Request、代码评审、Issue 管理
CI/CD 集成:自动化构建、测试、部署
权限管理:控制谁可以访问和修改仓库
例子:
GitHub:国际知名,开源社区活跃
GitLab:可自建私有服务器,适合企业内部管理
Gitee(码云):国内托管平台,适合国内团队
关系总结
Git 是工具 → 本地管理代码、操作版本
GitHub / GitLab / Gitee 是服务 → 提供远程仓库和团队协作环境
开发流程中:
本地 Git 仓库 <-> 远程平台仓库(GitHub/GitLab/Gitee)
开发者在本地用 Git 提交、分支、合并,通过 push / pull 与远程仓库同步,团队成员通过远程仓库共享和协作
环境配置
安装 Git(Windows / Mac / Linux)
配置用户名与邮箱:
配置常用别名(可选):
SSH Key / HTTPS 访问配置
生成 SSH Key :在电脑终端输入 ssh-keygen -t rsa -C "your_email@ecoflow.com",连续回车,直到在 ~/.ssh 目录下出现 id_rsa.pub 和 id_rsa 文件,其中 id_rsa.pub 就是需要的 SSH Key。
基础命令
仓库管理
git clone –拉取代码指令
git clone 是 Git 中用于 从远程仓库复制(克隆)一个完整仓库到本地 的命令。执行后,会在当前目录创建一个 以仓库名命名的文件夹,里面包含仓库内容和 .git 目录。
使用语法
克隆仓库
克隆指定分支
浅克隆(只下载最新的提交)
git init –初始化新的 Git 仓库
在当前目录执行后,会:
创建一个
.git文件夹(里面存储 Git 的对象、索引、配置等信息)让这个目录变成一个 Git 仓库
可以开始使用
git add、git commit等命令来管理版本
使用语法
将仓库初始化到指定目录,如果 <directory> 不存在,Git 会自动创建该目录并初始化仓库。
文件操作
git add –将文件添加至暂存区
git add 是 Git 中用来 把文件的修改添加到暂存区(Staging Area) 的命令。它是git commit之前的准备步骤。git add 并不会真正保存到 Git 历史,只是暂存。修改文件后,需要重新 git add,否则提交不会包含最新修改。
使用语法
将指定文件的当前修改添加到暂存区,可以添加指定的多个文件
添加所有文件至暂存区
添加所有 .js 文件至暂存区
添加所有文件(包括删除的)至暂存区
只添加已跟踪的文件至暂存区
阶段性添加,Git 会交互式地逐块(hunk)询问是否添加,适合在同一个文件里,只提交部分修改
git reset –取消暂存
git reset主要用于 撤销修改或取消暂存
基本语法
<commit>:要回退到的目标提交(commit ID 或 HEAD~1 等)
<mode>:重置的方式,不同模式作用不同
soft模式:移动HEAD 指针到指定 commit,用于想修改最近的提交,并保留文件改动到暂存区
mixed模式:移动 HEAD 指针,同时清空暂存区,工作区文件保持修改状态
hard模式:移动head指针,同时清空暂存区和工作区的修改
⚠️ 使用 --hard 时要非常小心,容易丢失数据。
取消暂存文件
相当于把文件从暂存区移回工作区
git commit –提交代码
git commit 是 Git 中 将暂存区(Staging Area)里的修改保存到本地仓库(Repository) 的命令。
基本用法
-m 是 --message 的简写,用于传入提交信息。
这个命令的意思是:
把当前**已暂存(staged)**的更改提交到本地仓库中;
这次提交的说明是:”修复登录页面按钮样式”
❗️Git commit之前必须先git add,先检查一下要新增的代码有没有什么问题,如果没有问题git add之后执行git commit。git commit之后需要git push将代码推到云端
常用选项
-am
自动把 已跟踪文件的修改 添加到暂存区并提交
–amend
修改最近一次提交
可以更新提交信息或合并新修改
这样会把暂存区的修改合并到上一次提交中,原来的 commit ID 会改变
将暂存区的修改合并到上一次提交中,不修改提交信息
commit提交规范
pnpm run commit
部门撰写的代码提交脚本
git status –仓库状态
git status 是 Git 中用来查看当前仓库状态的命令,可以帮助你了解哪些文件被修改、哪些文件在暂存区、哪些文件未跟踪等。
基本语法
执行后,会显示:
查看历史
git log –提交历史
git log 是 Git 中用来查看提交历史的命令。它会按时间倒序列出仓库的提交记录,包括提交 ID、作者、日期和提交信息。
基本语法
如果需要简短显示提交历史,可以执行下面的命令
如果想要查看指定作者的分支可以执行下面的命令
git diff –查看文件差异
git diff 是 Git 中用于 查看文件修改差异 的命令,它可以显示当前工作区或暂存区与提交之间的变化。
查看工作区和暂存区之间的差异,显示 未暂存的修改。
查看暂存区和最新提交之间的差异,显示已暂存但未提交的修改,用于在提交前确认将提交的内容。
查看工作区和最新提交之间的差异,显示所有未提交的改动,包括暂存区和未暂存的修改。
比较两个提交之间的差异,只对指定文件显示差异
分支管理
git分支的含义
创建/切换分支
git branch –管理和查看分支
git branch 是 Git 中用于管理和查看分支(branch)的命令。
基本语法
查看所有分支
显示本地所有分支
当前所在分支会带 * 号
创建分支
创建一个新分支,但不会自动切换到该分支
创建并切换分支
创建一个新分支,并自动切换到该分支
删除分支
删除本地分支,如果分支未合并,会提示错误
强制删除分支
强制删除未合并分支
重命名分支
重命名当前或指定分支
Git checkout –切换分支
git checkout 是 Git 中一个多功能命令,主要用于 切换分支或恢复文件到指定状态。在新版本的gti中,切换分支更推荐使用 git switch,恢复文件使用 git restore。
切换到已有分支
创建并切换分支
恢复到某一个提交的状态
恢复指定文件到某次提交的状态
合并分支
Git merge
Git merge命令是 Git 中用于合并两个分支内容的命令。它将另一个分支的代码变更合并到当前分支中。
比如你有两个分支:
main:主分支feature/login:你在开发登录功能的分支
当你在 feature/login 上开发完成后,想把它合并回主分支:
删除分支
git branch -d
git branch -d 是 Git 中用来 删除本地分支 的命令。它会删除指定分支,但只有在分支已经被合并到当前分支或其他分支时才允许删除,否则 Git 会报错提示。
远程仓库协作
连接远程仓库
git remote
查看远程分支
添加远程仓库
推送和拉取
git push –推送到远程仓库
git push 命令用于从将本地的分支版本上传到远程并合并。会把当前分支的最新提交推送到默认的远程仓库(通常是 origin)和远程对应分支。
执行git push之后,分支会被合并到远程,可以在远程仓库中看到,git push时分支尽量写全,否则可能因为指针会导致分支被push到其他分支。
推送代码到指定的云端仓库
origin是远程仓库名(默认是origin)云端仓库是你要推送的分支名
git pull –拉取远程仓库代码
拉取代码,拉取完代码之后需要执行pnpm install 更新代码
git fetch 是 只拉不合并,git pull 是 拉完立即合并(相当于 fetch + merge)。
基本语法
git fetch –获取分支信息
git fetch 是 Git 中用来 从远程仓库获取最新的提交、分支和标签信息 的命令,但不会自动合并到本地分支。它只会更新本地的远程跟踪分支,让你知道远程仓库的最新状态。
基本语法
<remote>:远程仓库名称,通常是 origin
git删除远程分支
Git 中用于 删除远程仓库分支 的命令。它会告诉远程仓库(通常是 origin)删除指定的分支。
gitlab合并请求
在gitlab上合并请求
“合并请求”(Merge Request,简称 MR,在 GitHub 中叫 Pull Request,简称 PR)是协作式开发中非常核心的概念,主要用于将一个分支的代码合并到另一个分支,比如开发分支合并到主分支。
合并请求是一种代码审查和协作机制,用于把某个分支的修改合并到目标分支,并让其他人有机会先审查这次修改。
🧩 合并请求的基本流程(如 GitLab / GitHub):
开发新功能或修复 bug:
通常从主分支
main/master创建一个新分支(如feature/login)。在这个新分支中编写、提交你的代码。
发起合并请求(PR 或 MR):
提交后,在平台上点击“新建 Merge Request”。
说明你做了什么(如:修复了登录页面 bug)。
团队审查(Code Review):
其他开发者可以查看你的代码、评论、建议修改。
有问题时你可以继续提交代码,MR 会自动更新。
CI 测试检查(自动化测试):
- 很多项目设置了 CI/CD 流水线,自动跑测试,保证代码质量。
通过后合并:
审查通过、测试通过后,可以点击“Merge”按钮。
你的分支代码就被合并到目标分支了。
git高级用法
git cherry pick
git cherry-pick 是 Git 的高级操作,用于 将某个分支上的单个或多个提交应用到当前分支,而不需要合并整个分支。它常用于挑选特定功能或 bug 修复提交到其他分支。
基本语法
<commit>:要应用的提交 SHA-1 哈希值
使用场景
将 bug 修复从开发分支挑到主分支
查看开发分支的提交历史
使用 Cherry-pick 应用提交
如果过程发生冲突
可以解决冲突
也可以放弃cherry pick
git stash
git stash 是 Git 中的 临时保存机制,用于将当前工作区和暂存区的修改 临时存放到一个栈(stash stack)中,恢复到上一次提交的干净状态。存放顺序遵循 栈的特点:后存入的先取出(LIFO,后进先出)。
查看当前stash中的条目
保存修改到 stash
将 工作区 + 暂存区 的修改保存到 stash 栈中
工作区和暂存区恢复到上一次提交状态
可以为此次保存添加描述性注释,方便后续查看
应用stash
应用最近的 stash 并从栈中删除
应用指定 stash
删除指定 stash
清空所有 stash
git rebase
git rebase 是 Git 的一个高级操作,用于 将一个分支上的提交“移动”到另一个分支的最前端,从而保持提交历史整洁。相比 merge,rebase 可以让分支历史更线性。
基本语法
<commit>:指定你想从哪次提交开始整理历史,例如 HEAD~5 表示最近 5 次提交
修改历史操作
在编辑界面中,你可以替换命令以处理提交:
