📌 适合人群:Git 初学者 / 想系统复习 Git 的开发者
📅 更新日期:2026年7月10日


目录

  1. 什么是 Git

  2. Git 安装与配置

  3. Git 基本工作流程

  4. 常用命令速查

  5. 分支管理

  6. 远程仓库

  7. 常见问题与解决方案

  8. .gitignore 配置

  9. 总结


一、什么是 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 分支合并冲突解决

当两个分支修改了同一个文件的同一行时,会产生冲突。

解决步骤:

  1. 打开冲突文件,手动修改

  2. git add . 标记已解决

  3. git commit -m "解决冲突"

  4. 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 学习建议

  1. 多动手实践:每天用 git status 查看状态

  2. 养成好习惯:每次提交写清晰的 commit message

  3. 理解原理:不要死记命令,理解工作区、暂存区、仓库的关系

  4. 勤用 git log:随时查看提交历史,了解项目演变

9.3 推荐学习资源


最后更新: 2026年7月10日

如果本文对你有帮助,欢迎点赞、收藏、转发!有任何问题欢迎在评论区交流讨论。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐