Git 全套实操|配置 /.gitignore/ 分支合并 / 冲突解决 /git stash 完整教程

一、Git Config 三级配置(全局 / 仓库 / 系统)

1.1 三层配置优先级

优先级从高到低:本地仓库 (local) > 用户全局 (global) > 系统 (system),高配置覆盖低配置。

  1. local:当前项目.git/config,仅本仓库生效
  2. global:用户目录.gitconfig,本机所有仓库(开发最常用)
  3. system:Git 安装目录配置,本机全部用户

1.2 查看配置命令

bash

复制代码
# 查看仓库专属配置
git config --local -l
# 查看全局配置(推荐日常使用)
git config --global -l
# 查看系统全局配置
git config --system -l

1.3 必备:配置提交用户名 & 邮箱

每次提交记录都会携带用户名邮箱,克隆新项目不用重复配置,全局一次搞定:

bash

复制代码
# 设置全局用户名
git config --global user.name "张三"
# 设置全局邮箱(gitee/github注册邮箱)
git config --global user.email "zhangsan@163.com"

注意:禁止手动修改配置文件,全部通过git config命令操作,避免格式报错。

1.4 配置加载规则

Git 读取顺序:系统配置 → 全局用户配置 → 当前仓库配置,后加载的同名参数直接覆盖前面配置。

二、.gitignore 忽略文件(解决垃圾文件提交问题)

2.1 作用

过滤不需要纳入版本控制的文件:IDE 缓存、编译 class、Maven 打包 target、日志、系统隐藏文件,不会追踪、不会提交到远程仓库。

2.2 Windows 创建 .gitignore

Windows 右键无法直接创建,两种方案:

  1. Git Bash 命令创建

bash

复制代码
touch .gitignore
  1. 新建文件命名gitignore.,保存后系统自动修正为.gitignore

2.3 匹配语法规则

  1. # 开头、空行为注释,Git 忽略不解析
  2. * 任意多字符;? 单个字符;[0-9] 数字区间
  3. 末尾/代表目录,如target/忽略整个打包文件夹
  4. ! 取反,代表强制不忽略该文件
  5. **/ 递归匹配所有层级目录

2.4 匹配示例

properties

复制代码
# 忽略全部class编译文件
*.class
# 仅忽略项目根目录logs.txt
/logs.txt
# 忽略整个日志文件夹
logs/
# 递归所有目录下tmp文件夹
**/tmp/
# 忽略所有txt,但保留classes下a.txt
*.txt
!/classes/a.txt
# 只忽略tmp目录内txt文件
tmp/*.txt

2.5 Java 项目通用完整模板(直接复制使用)

properties

复制代码
# Java编译文件
*.class
# Maven/Gradle打包目录
target/
build/
# 压缩包
*.war
*.jar
*.zip
*.tar.gz
*.rar
# IDEA缓存文件
.idea/
*.iml
*.ipr
*.iws
# Eclipse工程文件
.project
.classpath
.settings/
# 日志文件
*.log
# 系统缓存
.DS_Store
Thumbs.db
# 临时文件
*.tmp
*.cache
*.diff
*.patch

2.6 全局统一忽略(所有项目生效)

配置后本机所有 Git 仓库共用一套忽略规则:

bash

复制代码
git config --global core.excludesfile ~/.gitignore

2.7 常见踩坑:.gitignore 不生效

原因:文件已经被 Git 追踪(执行过 add/commit),忽略规则对已追踪文件无效。 解决方案清除本地缓存:

bash

复制代码
# 清除单个文件追踪
git rm --cached 文件名
# 清空全部文件缓存
git rm --cached -r .
# 重新提交忽略配置
git add .
git commit -m "优化.gitignore过滤规则"

三、git diff 对比代码差异

git diff 用于查看工作区、暂存区、本地仓库三者之间代码改动,4 种高频场景:

3.1 工作区 vs 暂存区(未执行 git add 的修改)

bash

复制代码
# 查看单个文件改动
git diff readme.txt
# 查看全部文件改动
git diff

3.2 暂存区 vs 本地仓库(已 add 未 commit)

bash

复制代码
git diff --cached
git diff --cached readme.txt

3.3 工作区 vs 本地仓库最新版本

bash

复制代码
# 对比最新一次提交
git diff HEAD
# 对比上一次提交
git diff HEAD^

3.4 两个历史提交版本对比

bash

复制代码
git diff 版本号1 版本号2

标识说明

  • HEAD:本地仓库最新提交
  • HEAD^:上一次提交记录
  • HEAD~100:往前 100 次提交
  • a/:旧文件;b/:修改后新文件

四、Git 分支全套操作(创建 / 切换 / 合并 / 冲突)

4.1 分支底层原理

Git 分支只是提交记录的轻量指针,创建分支不复制全部代码,速度极快。

  • master/main:线上稳定主分支,存放可上线代码
  • HEAD:指针,指向当前正在操作的分支 开发规范:master 只合并完成功能,新功能新建独立 feature 分支开发。

4.2 分支基础命令

bash

复制代码
# 查看本地所有分支,*代表当前分支
git branch
# 仅创建dev分支,不切换
git branch dev
# 创建dev2并立刻切换(最常用)
git checkout -b dev2
# 切换已有分支
git checkout dev

4.3 删除分支

  1. 普通删除:仅允许删除已合并分支

bash

复制代码
git branch -d dev2
  1. 强制删除:分支未合并、存在未提交代码

bash

复制代码
git branch -D dev2

注意:不能删除当前正在使用的分支,必须切换其他分支后再删除。

4.4 分支合并 merge

开发完成后,将功能分支合并到主分支流程:

bash

复制代码
# 切换至稳定主分支
git checkout master
# 合并dev2分支全部代码
git merge dev2

4.5 合并冲突完整解决流程

冲突触发条件:两个分支修改同一个文件同一行代码,Git 无法自动融合。

  1. 打开冲突文件,查看标记:

plaintext

复制代码
<<<<<<< HEAD
master分支原有代码
=======
dev2分支修改代码
>>>>>>> dev2
  1. 手动删除<<<<<< ===== >>>>>>标记,保留最终业务代码;
  2. 保存文件,提交完成合并:

bash

复制代码
git add .
git commit -m "解决分支代码合并冲突"

4.6 图形化查看分支提交树

bash

复制代码
git log --graph

五、git stash 临时存放未提交代码

5.1 使用场景

正在开发新功能,代码写了一半不适合提交,但需要切换分支修复线上 bug;使用stash工作区 + 暂存区所有修改存入堆栈,切换分支无残留。

5.2 全套 stash 命令

bash`

复制代码
# 暂存当前所有修改,备注说明
git stash save "购物车功能开发半成品"
# 查看堆栈内所有临时记录
git stash list
# 恢复代码,保留堆栈记录
git stash apply
# 恢复代码并删除堆栈记录(日常首选)
git stash pop
# 删除指定堆栈记录
git stash drop stash@{0}
# 清空全部暂存堆栈
git stash clear

5.3 标准业务流程

  1. dev 分支开发一半代码 → git stash 临时保存
  2. git checkout hotfix 切换 bug 修复分支
  3. 修复、测试、合并 bug 代码到 master
  4. 切回 dev 分支 → git stash pop 恢复半成品代码继续开发

六、文末总结

  1. 开发环境初始化先配置全局用户名邮箱,一劳永逸;
  2. 新项目第一时间编写.gitignore,杜绝垃圾文件提交仓库;
  3. 新功能单独创建分支开发,不直接在 master 修改代码;
  4. 合并冲突手动清理标记后再提交,保证代码逻辑正确;
  5. 中途切换分支使用git stash,避免生成无意义提交记录;

常用命令速查表

功能 命令
全局配置账号 git config --global user.name/email
查看代码差异 git diff / git diff --cached
创建并切换分支 git checkout -b 分支名
合并分支 git merge 分支名
强制删除分支 git branch -D 分支名
临时保存半成品 git stash save 备注
恢复暂存代码 git stash pop
相关推荐
轮到我狗叫了9 小时前
git - 版本控制工具 - 对应的常见命令 - 以及无需后续每次手动source conda
git
changxiang10 小时前
GIT 备忘
git
DogDaoDao19 小时前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
wdfk_prog1 天前
GitHub push 失败:如何扫描并清理 Git 历史中的大文件
git·elasticsearch·github
大明二代1 天前
使用 Traefik、cert-manager 和 DNS-01 为内网 Kubernetes 服务配置 HTTPS
git·kubernetes·flux
小芒果_011 天前
git常用命令速查
大数据·git·elasticsearch
2501_930472441 天前
腾讯云助手规范化Git提交记录
git·elasticsearch·腾讯云
风尘小子2 天前
git的.gitignore文件中文件和目录配置
git
Tanner_SL2 天前
Linux笔记之GIT常用命令
linux·git
醉颜凉2 天前
Jenkins与Git集成完全指南:从基础配置到自动触发构建
运维·git·jenkins