git工具简介

一、 Git 四大核心区域

这张图里包含了 Git 最关键的四个存储区域,它们是 Git 版本控制的基础:

  • 工作区(Working Directory) 就是你电脑里实际写代码的文件夹,比如图里的 main.c 文件就存放在这里。你日常的编辑、新增、删除文件,都是在这个区域完成的。

  • 暂存区(Staging Area / Index) 可以理解为一个 "待提交清单",用来暂时存放你准备提交的修改。当你执行 git add main.c 时,就是把工作区里的 main.c 改动添加到暂存区。

  • 本地仓库(Local Repository) 这是 Git 在你本地创建的版本数据库,所有提交的代码都会在这里生成一个历史版本记录。执行 git commit 命令,会把暂存区的内容正式提交到本地仓库。

  • 远程仓库(Remote Repository) 托管在服务器上的仓库,比如图里的 Gitee(码云),也可以是 GitHub、GitLab。执行 git push 命令,会把本地仓库的提交推送到远程仓库,方便团队协作和代码备份。


2. 代码流转完整流程(面试必背)

结合这张图,一个标准的 Git 操作流程是:

  1. 在工作区写代码 :比如创建 / 修改 main.c
  2. 添加到暂存区git add main.c → 把改动放入待提交清单。
  3. 提交到本地仓库git commit -m "完成main.c开发" → 生成一个本地版本。
  4. 推送到远程仓库git push origin main → 把本地版本同步到 Gitee 服务器。

二、基础流程:本地仓库初始化与版本迭代

1. 环境准备(面试必知)

复制代码
# 配置用户信息(必须,否则无法提交)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

# 查看配置(验证是否生效)
git config --list
  • 面试考点--global 表示全局配置,所有仓库共用;不加则仅当前仓库生效。

2. 初始化仓库 & 首次提交

复制代码
# 1. 创建并进入项目目录
mkdir myproject && cd myproject

# 2. 初始化本地仓库(生成.git目录)
git init

# 3. 创建/编辑代码文件
vi main.c

# 4. 将文件添加到暂存区(工作区→暂存区)
git add main.c  # 单个文件
# git add .     # 所有改动文件(常用)

# 5. 提交到本地仓库(暂存区→本地仓库)
git commit -m "feat: 初始化main.c,实现基础功能"
# -m 后是提交说明,建议遵循规范(feat/fix/docs等前缀)
  • 提交说明规范 (面试加分):
    • feat:新增功能;fix:修复 bug;docs:文档修改;style:格式调整;refactor:重构。

3. 版本迭代(修改 - 暂存 - 提交)

复制代码
# 1. 修改代码
vi main.c

# 2. 查看当前状态(关键!面试常考)
git status  # 显示改动在工作区/暂存区,是否未跟踪

# 3. 暂存改动
git add main.c

# 4. 提交新版本
git commit -m "fix: 修复main.c中计算逻辑错误"

# 5. 查看版本历史(面试高频)
git log  # 完整日志
git log --oneline  # 简洁日志(推荐)
git log -3  # 只看最近3条
  • git log 关键信息 :提交 ID(哈希值)、作者、日期、提交说明,HEAD -> master 表示当前分支最新版本。

三、分支管理(面试核心考点)

1. 分支基础操作

复制代码
# 1. 查看分支
git branch  # 列出本地分支,* 表示当前分支
git branch -r  # 查看远程分支
git branch -a  # 查看所有分支(本地+远程)

# 2. 创建分支(开发新功能/修复bug专用)
git branch dev  # 创建dev分支
git checkout dev  # 切换到dev分支
# 简写:创建并切换分支(常用)
git checkout -b dev

# 3. 在dev分支开发并提交
vi main.c
git add .
git commit -m "feat: 在dev分支新增add方法"

# 4. 合并分支(dev开发完成,合并到主分支master)
git checkout master  # 先切回主分支
git merge dev  # 合并dev到master

# 5. 删除分支(合并后清理)
git branch -d dev  # 删除本地分支
git push origin --delete dev  # 删除远程分支

2. 分支策略(面试必答)

  • master/main:主分支,存放稳定可发布的代码,禁止直接修改。
  • dev/develop:开发分支,团队协作的核心分支,功能开发完成后合并到主分支。
  • feature/xxx :功能分支,从 dev 创建,开发完合并回 dev,如 feature/login
  • bugfix/xxx:bug 修复分支,从 master 创建,修复后合并回 master 和 dev。

3. 冲突解决(面试高频)

当合并分支时多个分支修改了同一行代码,会触发冲突:

复制代码
# 1. 合并时提示冲突,先查看冲突文件
git status  # 标记为both modified的文件是冲突文件

# 2. 编辑冲突文件,手动解决冲突
# 冲突标记:<<<<<<< HEAD(当前分支代码)、=======(待合并分支代码)、>>>>>>> dev
vi main.c  # 删除冲突标记,保留正确代码

# 3. 解决后重新提交
git add .
git commit -m "fix: 解决dev合并到master的代码冲突"

四、远程协作:本地 ↔ 远程仓库

1. 关联远程仓库

复制代码
# 1. 方式1:本地仓库关联已有远程仓库
git remote add origin https://gitee.com/你的账号/myproject.git

# 2. 方式2:克隆远程仓库到本地(常用,无需init)
git clone https://gitee.com/你的账号/myproject.git
cd myproject
  • 面试考点origin 是远程仓库的默认别名,可自定义。

2. 本地 ↔ 远程同步

复制代码
# 1. 推送到远程仓库
git push -u origin master  # 首次推送,-u 绑定本地master到远程master
git push  # 后续推送(已绑定)

# 2. 拉取远程最新代码(协作必备)
git pull origin master  # 拉取并合并远程master到本地
# 分步操作(面试常问区别):
git fetch origin master  # 仅拉取远程代码,不合并
git merge origin/master  # 手动合并到本地

# 3. 查看远程仓库信息
git remote -v

3. 标签管理(发布版本用,面试加分)

复制代码
# 1. 创建标签(标记发布版本)
git tag v1.0.0  # 基于最新提交创建标签
git tag v1.0.0 提交ID  # 基于指定提交创建标签

# 2. 推送标签到远程
git push origin v1.0.0
git push origin --tags  # 推送所有标签

# 3. 查看标签
git tag
git show v1.0.0  # 查看标签详情

五、高频场景 & 面试避坑点

1. 撤销操作(面试必考)

复制代码
# 1. 撤销工作区改动(未add)
git checkout -- main.c  # 恢复到最近一次提交的状态

# 2. 撤销暂存区改动(已add,未commit)
git reset HEAD main.c  # 暂存区→工作区

# 3. 撤销本地提交(已commit,未push)
git reset --hard HEAD^  # 撤销上一次提交(慎用,会丢失改动)
git reset --hard 提交ID  # 回滚到指定版本

# 4. 撤销远程提交(已push,面试慎答)
git revert 提交ID  # 创建新提交,撤销指定版本的改动(推荐,不破坏历史)

2. 面试高频问答

问题 标准答案
git add 和 git commit 的区别? git add 把工作区改动放到暂存区;git commit 把暂存区内容提交到本地仓库,生成版本记录。
git pull 和 git fetch 的区别? git pull = git fetch + git merge,拉取并自动合并;git fetch 仅拉取远程代码,手动合并更安全。
分支合并时冲突的原因?如何解决? 多个分支修改了同一文件的同一行代码;先手动编辑冲突文件删除冲突标记,保留正确代码,再 add+commit。
为什么不直接在 master 分支开发? master 分支存放稳定代码,直接修改易引入 bug;通过功能分支开发,测试稳定后再合并,保证主分支安全。
git reset 和 git revert 的区别? git reset 回滚版本,会删除历史提交(本地可用);git revert 创建新提交撤销改动,保留历史(远程推荐)。

六、核心流程总结(面试速记)

  1. 本地开发git init → 写代码 → git addgit commitgit log
  2. 分支管理git checkout -b 分支名 → 开发 → git checkout mastergit merge 分支名
  3. 远程协作git remote add origin 地址git push / git pull
  4. 高频操作git status(查状态)、git log(查历史)、git reset(撤销)、解决冲突。
相关推荐
小邓的技术笔记2 小时前
Git Push 失败:分支名大小写不一致问题解析
git
艺杯羹2 小时前
Git入门基础:从概念到安装的完整指南
git·elasticsearch·开发工具·版本控制·git入门·代码托管
不断学习加努力2 小时前
git代码管理的一些基础知识
git
Java后端的Ai之路3 小时前
【Git版本控制】-趣味解说Git核心知识
大数据·git·elasticsearch
是店小二呀4 小时前
Git 分支核心指南:原理、合并策略与实战技巧
git
Allen_LVyingbo4 小时前
医疗大模型预训练:从硬件选型到合规落地实战(2025总结版)
开发语言·git·python·github·知识图谱·健康医疗
亚林瓜子14 小时前
git使用远程分支覆盖本地分支
git·master
我不是8神17 小时前
git知识点总结
git
Greg_Zhong20 小时前
Git建立本地与远程仓库的连接,简洁版
git·本地与远程连接