Git 完全入门指南:从零到精通
📌 适合人群:Git 初学者 / 想系统复习 Git 的开发者
📅 更新日期:2026年7月10日
目录
什么是 Git
Git 安装与配置
Git 基本工作流程
常用命令速查
分支管理
远程仓库
常见问题与解决方案
.gitignore 配置
总结
一、什么是 Git
1.1 Git 简介
Git 是目前世界上最先进的分布式版本控制系统,由 Linux 之父 Linus Torvalds 于 2005 年创建。
1.2 为什么要用 Git?
| 场景 | 没有 Git | 有 Git |
|---|---|---|
| 代码备份 | 手动复制文件夹,命名混乱 | 一键提交,完整记录 |
| 版本回退 | 找不回来 | git reset 轻松回退 |
| 多人协作 | 互相覆盖代码 | 分支合并,冲突解决 |
| 查看历史 | 靠记忆 | git log 清晰可见 |
1.3 Git 与 SVN 的区别
| 特性 | Git | SVN |
|---|---|---|
| 架构 | 分布式 | 集中式 |
| 网络依赖 | 离线可提交 | 必须联网 |
| 分支成本 | 极低 | 较高 |
| 存储方式 | 完整仓库克隆 | 只存差异 |
二、Git 安装与配置
2.1 安装 Git
Windows: 下载 Git for Windows,一路默认安装。
Mac:
bash
brew install git
Linux (Ubuntu/Debian):
bash
sudo apt install git
2.2 初次配置(必须)
bash
# 设置用户名 git config --global user.name "你的名字" # 设置邮箱 git config --global user.email "你的邮箱@example.com" # 设置默认编辑器(可选) git config --global core.editor "code --wait"
2.3 查看配置
bash
# 查看所有配置 git config --list # 查看当前项目配置 git config user.name git config user.email
三、Git 基本工作流程
3.1 核心概念
Git 有三个工作区域:
text
┌─────────────┐ git add ┌─────────────┐ git commit ┌─────────────┐
│ 工作区 │ ──────────► │ 暂存区 │ ──────────────► │ 本地仓库 │
│ (Working) │ │ (Staging) │ │ (Repository)│
└─────────────┘ └─────────────┘ └─────────────┘
│
│ git push
▼
┌─────────────┐
│ 远程仓库 │
│ (Remote) │
└─────────────┘
3.2 初始化仓库
bash
# 在当前目录创建 Git 仓库 git init # 克隆远程仓库 git clone <仓库地址>
3.3 基本操作(核心三板斧)
bash
# 1. 查看状态 git status # 2. 添加文件到暂存区 git add <文件名> # 添加单个文件 git add . # 添加所有改动 git add *.java # 添加所有 Java 文件 # 3. 提交到本地仓库 git commit -m "提交说明" # 4. 查看提交历史 git log git log --oneline # 简洁模式
3.4 完整工作流示例
bash
# 1. 修改代码 vim Main.java # 2. 查看改动 git status # 3. 添加到暂存区 git add . # 4. 提交 git commit -m "修复了登录 bug" # 5. 查看历史 git log --oneline
四、常用命令速查
4.1 文件操作
| 命令 | 说明 |
|---|---|
git add <file> |
添加文件到暂存区 |
git add . |
添加所有改动 |
git rm <file> |
从仓库删除文件 |
git mv <old> <new> |
重命名文件 |
git restore <file> |
放弃工作区修改 |
git restore --staged <file> |
从暂存区移除(不删文件) |
4.2 查看差异
bash
# 查看工作区与暂存区的差异 git diff # 查看暂存区与上次提交的差异 git diff --staged # 查看两次提交的差异 git diff <commit1> <commit2>
4.3 版本回退
bash
# 查看所有历史(包括回退掉的) git reflog # 回退到上一个版本 git reset --hard HEAD^ # 回退到上上个版本 git reset --hard HEAD^^ # 回退到指定版本 git reset --hard <commit-id> # 只回退暂存区,保留工作区 git reset --soft HEAD^ # 回退暂存区和工作区 git reset --hard HEAD^
4.4 三种 reset 模式对比
| 模式 | 工作区 | 暂存区 | 仓库 |
|---|---|---|---|
--soft |
保留 | 保留 | 回退 |
--mixed(默认) |
保留 | 清空 | 回退 |
--hard |
清空 | 清空 | 回退 |
五、分支管理
5.1 什么是分支?
分支就是独立的开发线,让你可以在不影响主代码的情况下开发新功能。
text
master ──●─────●─────────●─────► │ │ feature ──────●─────●─────────●──►
5.2 分支常用命令
bash
# 查看分支 git branch # 本地分支 git branch -r # 远程分支 git branch -a # 所有分支 # 创建分支 git branch <分支名> # 切换分支 git checkout <分支名> git switch <分支名> # 新语法 # 创建并切换 git checkout -b <分支名> git switch -c <分支名> # 新语法 # 合并分支 git checkout master git merge <分支名> # 删除分支 git branch -d <分支名> # 已合并 git branch -D <分支名> # 强制删除
5.3 分支合并冲突解决
当两个分支修改了同一个文件的同一行时,会产生冲突。
解决步骤:
-
打开冲突文件,手动修改
-
git add .标记已解决 -
git commit -m "解决冲突" -
git merge --continue(或直接 commit)
冲突文件示例:
java
<<<<<<< HEAD System.out.println("这是 master 分支"); ======= System.out.println("这是 feature 分支"); >>>>>>> feature
六、远程仓库
6.1 关联远程仓库
bash
# 添加远程仓库 git remote add origin <仓库地址> # 查看远程仓库 git remote -v # 删除远程仓库 git remote remove origin
6.2 推送与拉取
bash
# 推送到远程 git push origin master git push -u origin master # 第一次推送,建立关联 # 拉取最新代码(不合并) git fetch origin # 拉取并合并(推荐) git pull origin master # 等价于 git fetch origin git merge origin/master
6.3 常见远程仓库地址格式
| 协议 | 格式示例 |
|---|---|
| HTTPS | https://github.com/用户名/仓库名.git |
| SSH | git@github.com:用户名/仓库名.git |
七、常见问题与解决方案
7.1 LF 将被 CRLF 替换警告
问题现象:
text
warning: in the working copy of 'Main.java', LF will be replaced by CRLF
原因: Windows 和 Linux/Mac 换行符不同。
解决方案:
| 方案 | 命令 |
|---|---|
| 忽略 | 直接提交,不影响功能 |
| 关闭自动转换 | git config --global core.autocrlf false |
| 使用 .gitattributes | 创建 .gitattributes 文件统一配置 |
.gitattributes 示例:
text
* text=auto eol=lf *.java text eol=lf
7.2 "detected dubious ownership" 错误
问题现象:
text
fatal: detected dubious ownership in repository at 'C:/'
原因: 在系统目录执行 Git 命令,Git 出于安全考虑阻止。
解决方案:
bash
# 切换到正确的项目目录 cd C:/你的项目路径 # 或添加安全目录(不推荐) git config --global --add safe.directory C:/
7.3 修改已提交的 commit 信息
bash
# 修改最近一次提交信息 git commit --amend -m "新的提交信息" # 修改最近一次提交的作者 git commit --amend --author="新作者 <新邮箱@example.com>"
7.4 误删文件恢复
bash
# 从暂存区恢复 git restore <文件> # 从上次提交恢复 git restore --source=HEAD <文件> # 从指定提交恢复 git restore --source=<commit-id> <文件>
7.5 撤销 commit 但保留修改
bash
# 撤销 commit,保留修改在工作区 git reset --soft HEAD^ # 撤销 commit,保留修改在暂存区 git reset --mixed HEAD^
八、.gitignore 配置
8.1 什么是 .gitignore?
.gitignore文件用来指定哪些文件不需要被 Git 管理。
8.2 常见忽略内容
gitignore
# 编译输出 *.class *.jar target/ build/ # IDE 配置 .idea/ *.iml .vscode/ .settings/ .project .classpath # 日志文件 *.log # 系统文件 .DS_Store Thumbs.db # 依赖目录 node_modules/ vendor/ # 环境配置 .env application-dev.properties
8.3 .gitignore 生效条件
-
必须在提交之前配置好
-
已经被 Git 追踪的文件,添加
.gitignore不会生效 -
要停止追踪已提交的文件:
bash
git rm --cached <文件>
九、总结
9.1 核心命令速记口诀
text
git init 建仓库 git add 加暂存 git commit 存本地 git push 推远程 git pull 拉更新 git branch 管分支 git log 查历史 git status 看状态
9.2 学习建议
-
多动手实践:每天用
git status查看状态 -
养成好习惯:每次提交写清晰的 commit message
-
理解原理:不要死记命令,理解工作区、暂存区、仓库的关系
-
勤用
git log:随时查看提交历史,了解项目演变
9.3 推荐学习资源
-
Pro Git 中文版 - 官方权威书籍
-
Git 飞行规则 - 常见问题解决方案
-
Learn Git Branching - 交互式学习
最后更新: 2026年7月10日
如果本文对你有帮助,欢迎点赞、收藏、转发!有任何问题欢迎在评论区交流讨论。
更多推荐




所有评论(0)