目录
[1. 仓库初始化与配置](#1. 仓库初始化与配置)
[2. 远程仓库操作](#2. 远程仓库操作)
[3. 分支管理](#3. 分支管理)
[4. 代码提交](#4. 代码提交)
[5. 推送与拉取](#5. 推送与拉取)
[6. 版本回退与撤销](#6. 版本回退与撤销)
[7. 合并与冲突解决](#7. 合并与冲突解决)
[8. 储藏与标签](#8. 储藏与标签)
[.git 文件夹的可见性](#.git 文件夹的可见性)
[.git 文件夹内部结构](#.git 文件夹内部结构)
[SpringBoot项目完整 .gitignore 配置](#SpringBoot项目完整 .gitignore 配置)
[Vue3项目 .gitignore 核心配置](#Vue3项目 .gitignore 核心配置)
常用Git命令大全
1. 仓库初始化与配置
# 初始化本地仓库
git init
# 克隆远程仓库
git clone <远程仓库URL>
# 配置用户信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
2. 远程仓库操作
# 添加远程仓库
git remote add origin <远程仓库URL>
# 查看远程仓库
git remote -v
# 修改远程仓库URL
git remote set-url origin <新的远程仓库URL>
# 删除远程仓库
git remote remove origin
3. 分支管理
# 查看所有分支
git branch -a
# 创建新分支
git branch <分支名>
# 切换分支
git checkout <分支名>
# 或者(新版本Git)
git switch <分支名>
# 创建并切换到新分支
git checkout -b <分支名>
git switch -c <分支名>
# 删除分支
git branch -d <分支名> # 安全删除
git branch -D <分支名> # 强制删除
# 重命名分支
git branch -m <新分支名>
4. 代码提交
# 查看状态
git status
# 查看变更内容
git diff
# 添加文件到暂存区
git add <文件名> # 添加特定文件
git add . # 添加所有文件
git add -A # 添加所有变更
# 提交到本地仓库
git commit -m "提交信息"
# 修改上次提交信息
git commit --amend
5. 推送与拉取
# 推送到远程仓库
git push origin <分支名>
# 首次推送并建立关联
git push -u origin <分支名>
# 拉取远程更新
git pull origin <分支名>
# 获取远程更新但不合并
git fetch origin
6. 版本回退与撤销
# 查看提交历史
git log
git log --oneline # 简洁版
# 回退到指定提交
git reset --hard <commit_id>
# 回退到上一个提交
git reset --hard HEAD^
# 撤销工作区的修改
git checkout -- <文件名>
# 撤销暂存区的文件
git reset HEAD <文件名>
# 强制推送到远程(谨慎使用!)
git push -f origin <分支名>
7. 合并与冲突解决
# 合并分支
git merge <要合并的分支名>
# 变基合并
git rebase <分支名>
# 解决冲突后继续合并
git add .
git commit -m "解决冲突"
# 取消合并
git merge --abort
git rebase --abort
8. 储藏与标签
# 储藏当前工作
git stash
# 查看储藏列表
git stash list
# 恢复储藏
git stash pop
# 创建标签
git tag <标签名>
# 推送到远程
git push origin --tags
提交与推送详解
提交(Commit)的本质
提交是保存到本地仓库的操作,它:
-
将暂存区的变更永久保存到本地Git仓库
-
生成一个唯一的提交ID(commit hash)
-
只影响本地,不会上传到远程服务器
-
可以多次提交后再一次性推送
推送(Push)的作用
推送是将本地提交上传到远程仓库的操作,它:
-
将本地仓库中的提交同步到远程仓库
-
让团队成员能够看到你的更改
-
需要网络连接
关于代码丢失的问题
重要结论:只提交到本地,代码不会丢失!
具体说明:
第一次提交后:
git add .
git commit -m "第一次提交"
# 此时代码已安全保存在本地仓库
继续修改代码:
# 修改一些文件...
git add .
git commit -m "第二次提交"
一次性推送所有提交
git push origin master
# 这会推送第一次和第二次的所有提交
工作流程示例
# 第一天工作
git add .
git commit -m "完成用户登录功能"
# 不推送,直接下班
# 第二天工作
git add .
git commit -m "完成用户注册功能"
# 现在一次性推送两天的成果
git push origin master
# 远程仓库会收到两个提交
最佳实践建议
-
频繁提交:建议每完成一个小功能就提交一次
-
有意义的提交信息:清晰描述本次提交的内容
-
定期推送:虽然不会丢失,但建议每天结束工作前推送一次,防止本地意外
-
推送前先拉取:避免冲突
git pull origin master
git push origin master
特殊情况处理
如果只想要一个干净的提交记录,可以使用:
# 将多次提交合并为一次
git reset --soft HEAD~2 # 回退两次提交但保留更改
git commit -m "合并功能开发"
git push origin master
Git是分布式版本控制系统,本地仓库是完整的副本,提交到本地的代码是安全的!
本地仓库在哪?
本地仓库就是你的项目文件夹,具体来说:
可见部分:
你的项目文件夹/
├── src/ # 你的源代码
├── pom.xml # 配置文件
├── README.md # 说明文件
└── ... # 其他项目文件
隐藏部分(Git仓库):
你的项目文件夹/
├── .git/ # 这就是本地Git仓库!
│ ├── objects/ # 存储所有文件版本
│ ├── refs/ # 存储分支和标签引用
│ └── config # 仓库配置
└── 你的项目文件...
.git 文件夹的可见性
我们通常将项目文件夹称为工作区,而.git文件夹是Git的版本库,它默认是隐藏的。
在文件系统中,以点开头的文件和文件夹在默认情况下是隐藏的。这是为了防止用户误操作导致版本库损坏。
.git 文件夹默认是隐藏的,但可以通过不同方式查看:
Windows系统:
-
文件资源管理器:查看 → 勾选"隐藏的项目"
-
命令行 :
dir /a显示所有文件(包括隐藏文件)
macOS/Linux系统:
-
Finder:Cmd+Shift+. 显示隐藏文件
-
命令行 :
ls -la显示所有文件
在IDEA中查看:
-
Project面板 :默认不显示
.git文件夹 -
要查看:Settings → Editor → File Types → Ignored Files and Folders 取消
.git的忽略
.git 文件夹内部结构
.git/
├── HEAD # 当前所在分支
├── config # 仓库配置(远程仓库URL等)
├── description # 仓库描述
├── hooks/ # Git钩子脚本
├── info/ # 排除模式等
├── objects/ # 所有文件版本数据
│ ├── pack/ # 压缩的对象包
│ └── ... # 所有提交的文件内容
├── refs/ # 分支和标签引用
│ ├── heads/ # 本地分支
│ ├── tags/ # 标签
│ └── remotes/ # 远程分支引用
└── index # 暂存区索引
SpringBoot项目完整 .gitignore 配置
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的HTTP客户端请求
/httpRequests/
# 数据源本地存储忽略文件
/dataSources/
/dataSources.local.xml
# ========== 以下是需要补充的SpringBoot项目规则 ==========
# 编译输出
/target/
*/target/
**/target/
!/target/.gitkeep # 如果需要在空target目录保留.gitkeep文件
# 构建输出
/build/
*/build/
**/build/
# 日志文件
*.log
logs/
*.logs
# 临时文件
*.tmp
*.temp
*.cache
# 系统文件
.DS_Store
Thumbs.db
*.swp
*.swo
# IDE文件
.idea/
*.iws
*.iml
*.ipr
.vscode/
*.swp
*.swo
# Maven包装器
!.mvn/wrapper/maven-wrapper.jar
# 应用配置文件(根据情况选择是否忽略)
# /src/main/resources/application-*.properties
# /src/main/resources/application-*.yml
# 单元测试报告
/test-output/
/reports/
*.eml
# 打包文件
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# 依赖下载(如果有)
.dependency/
# 数据库文件(如果有本地数据库)
*.db
*.sqlite
# 环境变量文件(通常包含敏感信息)
.env
.env.local
.env.production
# 密钥文件
*.key
*.p12
*.keystore
Vue3项目 .gitignore 核心配置
# 依赖目录[citation:1][citation:5][citation:7]
node_modules/
.pnp/
.pnp.js
# 构建输出目录[citation:3][citation:5]
dist/
dist-ssr/
build/
out/
release/
deploy/
# 临时文件和缓存目录
.cache/
.tmp
.temp
# 日志文件[citation:1][citation:3][citation:7]
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# 本地环境变量文件[citation:1][citation:3]
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# IDE及编辑器配置文件[citation:1][citation:3][citation:4]
.idea/
.vscode/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# 操作系统生成文件[citation:1][citation:3]
.DS_Store
Thumbs.db
# 测试覆盖率报告[citation:3]
coverage/
.nyc_output/
# Lockfiles(根据团队约定选择是否忽略)
# package-lock.json
# yarn.lock
# pnpm-lock.yaml