Git复习(查询版本)

一、Git 核心概念与基础配置

1. 核心概念表
术语 定义 位置
工作区(WD) 本地可见的文件目录,日常编辑的文件存放处 项目根目录(非 .git 内)
暂存区(SA) 临时存储待提交的修改,可精确选择提交内容 .git/index
版本库(Repo) 存储所有提交历史的数据库,每个提交是不可修改的快照 .git 目录内
远程仓库 托管在服务器的仓库(如 GitHub),用于多人协作同步代码 远程服务器(如 GitHub)
分支(Branch) 独立的开发线,可并行开发不同功能,默认主分支为 mainmaster 版本库内
2. 安装与初始化配置
  • 安装验证

    复制代码
    git --version  # 输出版本号表示安装成功,如 git version 2.45.1
  • 全局配置(必做)

    复制代码
    # 设置提交者信息(会显示在所有提交记录中)
    git config --global user.name "Your Full Name"
    git config --global user.email "your.email@example.com"
    
    # 配置默认编辑器(避免使用 Vim 时操作困难)
    git config --global core.editor "code --wait"  # VS Code(需配置环境变量)
    git config --global core.editor "notepad.exe"  # Windows 记事本
    
    # 查看配置
    git config --global --list  # 列出所有全局配置
  • 初始化仓库

    场景 命令 说明
    本地新建仓库 git init 在当前目录生成 .git 文件夹
    克隆远程仓库 git clone <远程地址> 从远程下载完整仓库(含历史记录)
    克隆指定分支 git clone -b <分支名> <远程地址> 仅克隆远程指定分支(节省时间)

二、工作区与暂存区操作

1. 文件状态表
状态符号 含义(通过 git status -s 查看) 说明
?? 未跟踪(Untracked) 新文件,未执行 git add
A 已暂存(Staged) 已执行 git add,待提交
M(红色) 已修改(Modified) 已跟踪文件被修改,未暂存
M(绿色) 已修改且暂存(Modified+Staged) 已执行 git add,修改后再次修改
D 已删除(Deleted) 已跟踪文件被删除,未暂存或已暂存
2. 核心操作命令
操作目标 命令 示例
查看文件状态 git status git status(详细)/ git status -s(精简)
查看具体修改内容 git diff <文件名> git diff index.html(工作区 vs 暂存区)
查看暂存区与版本库差异 git diff --cached <文件名> git diff --cached style.css
添加单个文件到暂存区 git add <文件名> git add app.js
添加目录到暂存区 git add <目录名>/ git add src/
添加所有新增 / 修改文件 git add . 不包括已删除文件
添加修改 / 删除文件 git add -u 不包括新增文件
撤销工作区修改 git checkout -- <文件名> git checkout -- app.js(恢复到最近版本)
撤销暂存区修改(放回工作区) git reset HEAD <文件名> git reset HEAD app.js

三、版本库提交与历史查看

1. 提交操作
操作 命令 说明
提交暂存区到版本库 git commit -m "提交说明" 提交说明需简洁清晰(如 fix: 修复登录bug
提交时修改说明 git commit --amend 修改最近一次提交的说明(未推送到远程时使用)
跳过暂存区直接提交 git commit -am "提交说明" 仅适用于已跟踪文件的修改 / 删除
2. 查看提交历史
需求 命令 说明
查看完整历史 git log 按时间倒序,含哈希值、作者、时间、说明
精简历史(一行一条) git log --oneline 显示哈希值前 7 位 + 提交说明
查看最近 n 条历史 git log -n <数字> git log -n 3(最近 3 条)
查看文件修改历史 git log -p <文件名> git log -p app.js(含具体修改内容)
图形化显示分支历史 git log --graph --oneline * 显示分支合并关系
查看所有操作记录(含删除的提交) git reflog 用于找回误删的提交

四、版本回退与撤销(核心风险操作)

1. git reset 三种模式对比表
模式 版本库(HEAD) 暂存区(Index) 工作区(WD) 适用场景 风险级别
--soft 修改 不变 不变 撤销提交,保留暂存区修改(重新提交)
--mixed 修改 修改 不变 撤销提交和暂存,保留工作区修改(常用)
--hard 修改 修改 修改 彻底回退到历史版本(丢弃所有未提交修改)
2. 回退命令示例
复制代码
# 回退到上一版本(HEAD^ 等价于 HEAD~1)
git reset --mixed HEAD^  # 保留工作区,常用
git reset --hard HEAD~3  # 回退到前3个版本(慎用,会丢失修改)

# 通过哈希值回退(从 git log 或 git reflog 获取哈希)
git reset --hard a3f2d1c  # 回退到哈希为 a3f2d1c 的版本

五、分支管理(多人协作核心)

1. 分支命名规范
分支类型 命名示例 用途
主分支 main / master 存放稳定代码,用于发布
开发分支 develop 团队日常开发的集成分支
功能分支 feature/user-login 开发新功能,完成后合并到 develop
修复分支 hotfix/payment-bug 紧急修复线上问题,合并到 main 和 develop
发布分支 release/v1.0 版本发布前的准备(如改版本号)
2. 分支操作命令表
操作 命令 示例
查看本地分支 git branch * main 表示当前在 main 分支
查看远程分支 git branch -r 显示 origin/main 等远程分支
查看所有分支(本地 + 远程) git branch -a 远程分支以红色显示
创建分支(不切换) git branch <分支名> git branch feature/cart
创建并切换分支 git checkout -b <分支名> git checkout -b hotfix/login
切换分支(Git 2.23+) git switch <分支名> git switch develop
合并分支(目标分支:当前分支) git merge <源分支名> git checkout main; git merge feature/pay
删除本地已合并分支 git branch -d <分支名> git branch -d feature/cart
强制删除未合并分支 git branch -D <分支名> git branch -D feature/old(慎用)
3. 解决合并冲突

当两个分支修改同一文件的同一行时,会产生冲突,文件中会出现标记:

复制代码
<<<<<<< HEAD(当前分支内容)
hello world
=======
hello git
>>>>>>> feature/change(源分支内容)

解决步骤:

  1. 打开冲突文件,删除冲突标记(<<<<<<<=======>>>>>>>),保留需要的内容。
  2. 执行 git add <冲突文件> 标记为已解决。
  3. 执行 git commit 完成合并(无需 -m,自动生成合并说明)。

六、远程仓库交互

1. 远程仓库操作命令表
操作 命令 示例
关联远程仓库 git remote add <别名> <远程地址> git remote add origin https://github.com/xxx/repo.git
查看远程仓库信息 git remote -v 显示 fetch(拉取)和 push(推送)地址
拉取远程分支并合并 git pull <远程别名> <远程分支> git pull origin main
首次推送分支(关联上游) git push -u <远程别名> <本地分支> git push -u origin feature/login(后续可直接 git push
推送本地分支到远程 git push <远程别名> <本地分支> git push origin develop
删除远程分支 git push <远程别名> --delete <远程分支> git push origin --delete feature/old

七、进阶功能:Stash 与 Tag

1. 暂存工作区(Stash)

用于临时保存未提交的修改(如切换分支前):

操作 命令 说明
暂存当前工作区 git stash 暂存所有未提交的修改(新增文件需先 git add
查看暂存列表 git stash list 显示 stash@{0}: WIP on main: a3f2d1c 等记录
恢复最近的暂存并删除记录 git stash pop 常用,恢复后删除暂存
恢复指定暂存(不删除) git stash apply stash@{1} 数字为暂存索引(从 git stash list 获取)
删除指定暂存 git stash drop stash@{0} 仅删除暂存记录,不恢复内容
2. 标签管理(Tag)

标记重要版本(如发布版本):

操作 命令 说明
创建轻量标签(仅关联提交) git tag <标签名> git tag v1.0
创建带说明的标签 git tag -a <标签名> -m "说明" git tag -a v1.0 -m "正式发布1.0版本"
查看所有标签 git tag 按字母排序显示
推送单个标签到远程 git push <远程别名> <标签名> git push origin v1.0
推送所有标签到远程 git push <远程别名> --tags git push origin --tags
删除本地标签 git tag -d <标签名> git tag -d v1.0
删除远程标签 git push <远程别名> --delete <标签名> git push origin --delete v1.0

八、.gitignore 配置(必学)

创建 .gitignore 文件,指定无需 Git 跟踪的文件 / 目录,示例:

复制代码
# 忽略所有 .log 文件
*.log

# 忽略 node_modules 目录(前端依赖)
node_modules/

# 忽略 Python 虚拟环境
venv/

# 忽略 IDE 配置文件(VS Code)
.vscode/

# 例外:不忽略 important.log
!important.log
  • 注意.gitignore 需提交到版本库,供团队共享;已跟踪的文件无法通过 .gitignore 忽略,需先执行 git rm --cached <文件名> 取消跟踪。

九、最佳实践总结

  1. 提交规范 :每次提交说明需清晰(如 feat: 新增购物车功能),避免大而全的提交。
  2. 分支策略:主分支仅用于合并,开发在功能分支进行,定期从主分支同步到功能分支。
  3. 推送前检查 :推送前先 git pull 同步远程代码,解决冲突后再推送。
  4. 慎用强制操作git reset --hardgit push -f 会丢失历史,多人协作时禁止使用。
  5. 定期备份:重要版本用 Tag 标记,确保可回溯到稳定状态。
相关推荐
武子康1 小时前
大数据-156 Apache Druid+Kafka 实时分析实战:JSON 拉平摄取与 SQL 指标全流程
大数据·后端·nosql
悟能不能悟2 小时前
部署和测试 apereo/cas
大数据
小二·3 小时前
Git 高频操作命令大全(分类整理 + 修正说明)
大数据·git·elasticsearch
chatexcel3 小时前
ChatExcel亮相GTC2025全球流量大会
大数据·人工智能
KANGBboy3 小时前
ES 生产排查
大数据·elasticsearch·搜索引擎
幂律智能4 小时前
能源企业合同管理数智化转型解决方案
大数据·人工智能·能源
onebound_noah5 小时前
电商图片搜索:技术破局与商业落地,重构“视觉到交易”全链路
大数据·前端·网络·人工智能·重构·php
n***63277 小时前
Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider
大数据·python·信息可视化
Michelle80237 小时前
24大数据 while循环
大数据·python