一、Git基础概念
1、什么是Git?
Git是一个分布式版本控制系统,用于跟踪文件的变化,协调多人协作开发,并能够恢复到之前的版本。
2、为什么使用版本控制?
• 追踪历史变更,了解谁在何时做了什么修改
• 可以恢复到之前的版本,轻松撤销错误
• 多人协作时避免文件冲突
• 实验性功能可以在独立分支开发,不影响主代码
3、Git核心概念
| 区域 / 对象 | 作用 |
|---|---|
| 工作区(Workspace) | 本地写代码的文件夹,即实际操作的文件目录。 |
| 暂存区(Index/Stage) | 临时存放待提交的修改,是工作区和版本库的 "中转站"。 |
| 版本库(Repository) | Git 管理的核心目录(.git 文件夹),存储所有版本记录、分支等。 |
| 提交(Commit) | 把暂存区的修改保存到版本库,生成唯一的版本 ID(哈希值),是版本管理的最小单位。 |
| 分支(Branch) | 独立的开发线,默认主分支为 main(旧版为 master),可创建分支开发,再合并。 |
| 远程仓库(Remote) | 托管在网络上的 Git 仓库(如 GitHub、Gitee、GitLab),用于多人协作和代码备份。 |
4、Git工作流程
a.在工作区修改文件
b.将修改添加到暂存区 git add <file>
c.将暂存区内容提交到本地仓库 git commit -m "描述信息"
d.推送至远程代码仓库

5、基本术语
- 提交(Commit): 保存当前暂存区的变更到仓库
- 分支(Branch): 独立的开发线路,可以从主分支分离出来进行功能开发
- 合并(Merge): 将一个分支的更改整合到另一个分支
- 远程仓库(Remote): 托管在网络上的共享仓库,如GitHub、GitLab等
二、git安装
1、安装
Linux系统:
bash
ubuntu系统
apt install git -y
centos系统
yum install git -y
windows系统:
请参考此文档进行安装
2、验证安装
Linux系统使用git --version进行验证
windows系统使用git --version验证
3、基础必做
Git 需配置用户名和邮箱(关联代码提交记录),用户名邮箱出现在你的所有提交记录中:,执行以下命令(替换为自己的信息):
bash
# 配置全局用户名
git config --global user.name "Your Name"
# 配置全局邮箱(建议用GitHub/Gitee/Gitlab注册邮箱)
git config --global user.email "your_email@example.com"
使用git config --list查看配置,确认用户名和邮箱正确。
三、本地仓库基础操作(核心)
1. 初始化本地仓库
在需要管理的文件夹下,执行:
bash
打开git bash
# 进入目标文件夹(替换为自己的路径)
cd /Users/xxx
# 初始化Git仓库(生成.git隐藏文件夹)
git init
2. 文件状态查看
Git 中文件有 3 种状态:未跟踪(Untracked)、已暂存(Staged)、已提交(Committed),通过以下命令查看:
git status # 详细查看文件状态
git status -s # 简化输出(推荐,更清晰)
3. 暂存文件(工作区 → 暂存区)
# 暂存指定文件
git add filename.txt
# 暂存所有修改/新增文件
git add .
# 暂存指定目录
git add src/
4. 提交修改(暂存区 → 版本库)
# 基础提交(需输入提交信息)
git commit
# 直接输入提交信息(推荐)
git commit -m "feat: 新增登录功能"
# 跳过暂存区,直接提交已跟踪文件的修改(慎用)
git commit -am "fix: 修复登录按钮样式问题"
# 修正最后一次提交(信息写错/漏加文件)
git commit --amend # 会进入编辑器修改信息
git commit --amend -m "新的提交信息" # 直接修改信息
提交信息规范(推荐 Angular 规范):
feat: 新功能fix: 修复 bugdocs: 文档修改style: 代码格式(不影响逻辑)refactor: 重构(既不是新功能也不是修 bug)test: 测试相关chore: 构建 / 工具配置等杂项
5. 版本回溯与查看
(1)查看提交历史
git log # 完整日志
git log --oneline # 简化日志(一行显示,带简短哈希)
git log --graph # 图形化显示分支关系
git log -n 5 # 只看最近5次提交
git log --author="Your Name" # 查看指定作者的提交
(2)回溯到指定版本
# 查看所有提交的哈希值
git log --oneline
# 回溯到指定版本(保留修改,可恢复)
git reset --soft 哈希值 # 暂存区保留修改
git reset --mixed 哈希值 # 工作区保留修改,暂存区清空(默认)
git reset --hard 哈希值 # 彻底回滚,工作区/暂存区都清空(慎用)
⚠️ 注意:git reset --hard 会丢失未提交的修改,若误操作可通过 git reflog 恢复:
git reflog # 查看所有操作记录(包括reset)
git reset --hard 操作记录中的哈希值 # 恢复到reset前的版本
四、分支操作(多人协作核心)了解即可
1. 分支基础命令
# 查看所有分支(* 表示当前分支)
git branch
# 创建分支
git branch dev # 创建dev分支(基于当前分支)
# 切换分支
git checkout dev
# 创建并切换分支(推荐)
git checkout -b feature/login # 创建feature/login分支并切换
# 重命名分支
git branch -m old-name new-name
# 删除分支(需先切换到其他分支)
git branch -d dev # 删除已合并的分支
git branch -D dev # 强制删除未合并的分支(慎用)
2. 分支合并
(1)合并到主分支(如 dev 合并到 main)
# 1. 切换到主分支
git checkout main
# 2. 拉取最新的主分支代码(多人协作时必做)
git pull origin main
# 3. 合并dev分支到当前分支
git merge dev
(2)解决合并冲突
当两个分支修改了同一文件的同一部分,合并时会出现冲突,Git 会标记冲突区域:
plaintext
<<<<<<< HEAD # 当前分支的内容
main分支的代码
=======
dev分支的代码
>>>>>>> dev # 待合并分支的内容
解决步骤:
- 打开冲突文件,手动修改冲突内容(删除标记,保留正确代码);
- 暂存修改后的文件:
git add 冲突文件; - 完成合并:
git commit -m "merge: 合并dev分支,解决登录逻辑冲突"。
3. 变基(Rebase):更整洁的合并方式
变基可以让提交记录更线性,替代 merge(适合个人开发分支合并到主分支前):
# 切换到开发分支
git checkout feature/login
# 基于main分支变基(将当前分支的提交重新应用到main最新版本)
git rebase main
# 若出现冲突,解决后执行:
git add .
git rebase --continue # 继续变基
# 放弃变基
git rebase --abort
⚠️ 注意:不要对已推送到远程的公共分支执行变基(会打乱他人的提交记录)。
五、远程仓库操作(多人协作)
1. 关联远程仓库
(1)方式 1:本地仓库推送到远程(先有本地,后有远程)
-
在 GitHub/Gitee/GitLab 创建新仓库(不要勾选 "Initialize this repository with a README");
-
本地关联远程仓库:
关联远程仓库(origin是远程仓库的别名,可自定义)
git remote add origin https://github.com/你的用户名/仓库名.git
查看已关联的远程仓库
git remote -v
(2)方式 2:克隆远程仓库到本地(先有远程,后有本地)
git clone https://github.com/你的用户名/仓库名.git # HTTPS方式
git clone git@github.com:你的用户名/仓库名.git # SSH方式(推荐,免密码)
2. SSH 配置(免密码推送)
HTTPS 方式每次推送都要输密码,推荐配置 SSH:
1、生成 SSH 密钥:
ssh-keygen -t rsa -C "your_email@example.com" # 一路回车即可
2、查看公钥
- Windows:
cat ~/.ssh/id_rsa.pub - Mac/Linux:
cat ~/.ssh/id_rsa.pub
3、复制公钥,粘贴到 GitHub/Gitee /Gitlab的「设置 → SSH 密钥」中。
3. 推送代码到远程
# 第一次推送(需指定分支)
git push -u origin main # -u 关联本地main和远程main,后续可直接git push
# 后续推送
git push
# 推送指定分支
git push origin dev
4. 拉取远程代码
# 拉取远程最新代码并合并(等同于 git fetch + git merge)
git pull origin main
# 只拉取不合并(先查看差异,再手动合并)
git fetch origin main
git merge origin/main
# 拉取并变基(保持提交记录整洁)
git pull --rebase origin main
5. 远程分支操作
# 删除远程分支
git push origin --delete dev
# 更新远程分支列表(同步远程已删除的分支)
git remote prune origin
Git命令速查表
基础操作
| 命令 | 说明 | 示例 |
|---|---|---|
git init |
初始化Git仓库 | git init |
git add <file> |
将文件添加到暂存区 | git add index.html |
git add . |
添加所有修改文件到暂存区 | git add . |
git commit -m "<message>" |
提交暂存区文件到仓库 | git commit -m "添加首页" |
git status |
查看工作区状态 | git status |
git log |
查看提交历史 | git log --oneline |
分支操作
| 命令 | 说明 | 示例 |
|---|---|---|
git branch |
列出所有本地分支 | git branch |
git branch <name> |
创建新分支 | git branch feature/login |
git checkout <branch> |
切换分支 | git checkout feature/login |
git switch <branch> |
切换分支(Git 2.23+) | git switch feature/login |
git checkout -b <name> |
创建并切换分支 | git checkout -b feature/payment |
git switch -c <name> |
创建并切换分支(Git 2.23+) | git switch -c feature/payment |
git merge <branch> |
合并指定分支到当前分支 | git merge feature/login |
git branch -d <branch> |
删除本地分支 | git branch -d feature/login |
远程仓库
| 命令 | 说明 | 示例 |
|---|---|---|
git remote -v |
查看远程仓库信息 | git remote -v |
git remote add <name> <url> |
添加远程仓库 | git remote add origin https://github.com/user/repo.git |
git push <remote> <branch> |
推送分支到远程 | git push origin main |
git push -u <remote> <branch> |
设置上游分支并推送 | git push -u origin main |
git pull <remote> <branch> |
拉取并合并远程分支 | git pull origin main |
git clone <url> |
克隆远程仓库 | git clone https://github.com/user/repo.git |
撤销操作
| 命令 | 说明 | 示例 |
|---|---|---|
git checkout -- <file> |
撤销工作区修改 | git checkout -- index.html |
git reset HEAD <file> |
撤销暂存区修改 | git reset HEAD index.html |
git commit --amend |
修改最近一次提交 | git commit --amend -m "修正提交信息" |
git reset --hard <commit> |
回退到指定提交 | git reset --hard a1b2c3d |
常用配置
| 命令 | 说明 | 示例 |
|---|---|---|
git config --global user.name "<name>" |
设置全局用户名 | git config --global user.name "John Doe" |
git config --global user.email "<email>" |
设置全局邮箱 | git config --global user.email "john@example.com" |
git config --global core.editor "<editor>" |
设置默认编辑器 | git config --global core.editor "code --wait" |
git config --list |
查看所有配置 | git config --list |