Git 使用教程:从零到团队协作

基于真实开发场景整理的 Git 完整教程,涵盖日常操作、分支管理、远程协作和常见问题排查。

Git 使用教程:从零到团队协作

基于真实开发场景整理,涵盖日常操作、分支管理、远程协作和常见问题排查。


一、Git 是什么?

Git 是一个分布式版本控制系统,用于追踪文件变更、协同开发、代码回滚。

核心概念

概念 说明
工作区(Working Directory) 你当前编辑的文件目录
暂存区(Staging Area) 准备提交的文件列表
本地仓库(Local Repository) 已提交的历史记录
远程仓库(Remote Repository) GitHub/GitLab 上的备份仓库

工作流程

1
工作区 → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库

二、安装与配置

2.1 安装

1
2
3
4
5
6
7
8
9
# macOS
brew install git

# Linux
sudo apt install git          # Debian/Ubuntu
sudo yum install git          # CentOS/RHEL

# Windows
# 下载 https://git-scm.com/download/win

2.2 基础配置

1
2
3
4
5
6
7
8
9
# 设置用户名和邮箱(提交时显示)
git config --global user.name "你的名字"
git config --global user.email "your@email.com"

# 设置默认编辑器
git config --global core.editor "vim"

# 查看配置
git config --list --global

2.3 推荐配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 启用彩色输出
git config --global color.ui auto

# 设置别名(缩短命令)
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --graph --oneline --decorate --all"

# 启用自动合并
git config --global merge.ff false

三、日常操作

3.1 初始化仓库

1
2
3
4
5
6
7
# 创建新项目
mkdir my-project && cd my-project
git init

# 克隆已有项目
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git    # SSH 方式(推荐)

3.2 查看状态

1
2
3
4
5
6
7
8
# 查看当前状态(哪些文件被修改/新增/删除)
git status

# 查看简短状态
git status -s
# M file.txt      # 已修改未暂存
# ?? new.txt      # 未跟踪
# A added.txt     # 已暂存待提交

3.3 添加与提交

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 添加单个文件到暂存区
git add file.txt

# 添加所有修改
git add .

# 添加指定类型的文件
git add *.py

# 撤销暂存(从暂存区移回工作区)
git reset HEAD file.txt

# 提交到本地仓库
git commit -m "feat: 添加用户登录功能"

# 提交并自动添加所有修改(快捷方式)
git commit -am "fix: 修复登录bug"

# 修改上次提交(不改变提交时间)
git commit --amend -m "新的提交信息"

3.4 查看历史

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 查看提交历史
git log

# 查看简短日志
git log --oneline

# 查看图形化历史
git log --graph --oneline --all

# 查看某次提交的详情
git show <commit-hash>

# 查看两个版本之间的差异
git diff HEAD~1
git diff main..feature-branch

3.5 撤销修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 撤销工作区的修改(恢复到最后一次提交的状态)
git checkout -- file.txt        # 旧写法
git restore file.txt            # 新写法(推荐)

# 撤销暂存区的文件
git restore --staged file.txt

# 回退到某个版本(保留历史记录)
git revert <commit-hash>

# 回退到某个版本(丢弃历史记录,慎用!)
git reset --hard <commit-hash>

# 回退到上一个版本
git reset --hard HEAD~1

四、分支管理

4.1 分支操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看所有分支
git branch

# 查看远程分支
git branch -r

# 查看所有分支(含远程)
git branch -a

# 创建新分支
git branch feature-login

# 创建并切换到新分支
git checkout -b feature-login

# 切换到已有分支
git checkout main

# 删除本地分支
git branch -d feature-login

# 强制删除(即使有未合并的更改)
git branch -D feature-login

4.2 合并分支

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 切换到目标分支
git checkout main

# 合并另一个分支
git merge feature-login

# 快进式合并(无冲突时自动快进)
git merge --ff feature-login

# 禁止快进(保留合并记录)
git merge --no-ff feature-login

# 取消合并(出现冲突时想放弃)
git merge --abort

4.3 解决冲突

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. 查看冲突文件
git status

# 2. 打开冲突文件,找到冲突标记
<<<<<<< HEAD
主分支的代码
=======
feature 分支的代码
>>>>>>> feature-login

# 3. 手动编辑,保留需要的内容,删除冲突标记

# 4. 标记冲突已解决
git add resolved-file.txt

# 5. 完成合并
git commit -m "merge: 解决登录功能冲突"

4.4 常用分支策略

1
2
3
4
5
6
main (生产环境)
 ├── develop (开发分支)
 │    ├── feature/login
 │    ├── feature/dashboard
 │    └── bugfix/header-align
 └── release/v1.0

五、远程仓库协作

5.1 连接远程仓库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 修改远程地址
git remote set-url origin https://github.com/user/new-repo.git

# 删除远程仓库
git remote remove origin

5.2 推送与拉取

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 推送到远程(首次推送需要 -u)
git push -u origin main

# 推送到远程(之后可简写)
git push origin main

# 拉取远程更新
git pull origin main

# 拉取并自动合并
git pull --rebase origin main

# 获取远程更新但不合并
git fetch origin

5.3 标签管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 列出标签
git tag

# 创建标签
git tag v1.0.0

# 创建带注释的标签
git tag -a v1.0.0 -m "发布版本 1.0.0"

# 推送标签到远程
git push origin v1.0.0

# 推送所有标签
git push origin --tags

# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

六、高级技巧

6.1 Stash(暂存工作进度)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 保存当前工作进度
git stash save "正在调试登录功能"

# 查看暂存列表
git stash list

# 恢复最近的暂存
git stash pop

# 恢复指定的暂存
git stash apply stash@{1}

# 删除暂存
git stash drop stash@{0}

# 清空所有暂存
git stash clear

6.2 Cherry-pick(挑选提交)

1
2
3
4
5
6
7
8
# 将某个提交应用到当前分支
git cherry-pick <commit-hash>

# 挑选多个提交
git cherry-pick <hash1> <hash2>

# 挑选提交范围
git cherry-pick <hash1>^..<hash2>

6.3 Rebase(变基)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 将当前分支的提交变基到目标分支
git rebase main

# 交互式变基(编辑提交历史)
git rebase -i HEAD~3

# 变基时遇到冲突,解决后继续
git add resolved-file.txt
git rebase --continue

# 中止变基
git rebase --abort

6.4 .gitignore(忽略文件)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Python
__pycache__/
*.pyc
*.pyo
venv/
.env

# IDE
.vscode/
.idea/
*.swp
*.swo

# 操作系统
.DS_Store
Thumbs.db

# 构建产物
dist/
build/
*.egg-info/

# 敏感文件
config.local.yaml
secrets.json

七、SSH 密钥配置

7.1 生成密钥

1
2
3
4
5
6
7
8
9
# 检查是否已有密钥
ls ~/.ssh/id_rsa.pub

# 生成新密钥(推荐 Ed25519)
ssh-keygen -t ed25519 -C "your@email.com"

# 如果有密码保护,启动 ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

7.2 添加到 GitHub/GitLab

1
2
3
4
5
# 复制公钥
cat ~/.ssh/id_ed25519.pub

# 粘贴到 GitHub: Settings → SSH and GPG keys → New SSH key
# 粘贴到 GitLab: Settings → SSH Keys

7.3 测试连接

1
2
3
4
5
# GitHub
ssh -T git@github.com

# GitLab
ssh -T git@gitlab.com

八、常见问题排查

8.1 忘记添加文件

1
2
3
# 提交后发现漏了文件
git add missed-file.txt
git commit --amend --no-edit

8.2 误删文件恢复

1
2
3
4
5
# 从最后一次提交恢复
git checkout -- deleted-file.txt

# 从指定版本恢复
git checkout <commit-hash> -- file.txt

8.3 远程和本地不同步

1
2
3
4
5
6
# 强制同步(丢弃本地所有修改)
git fetch origin
git reset --hard origin/main

# 保留本地修改(尝试自动合并)
git pull --rebase origin main

8.4 查看谁修改了某行代码

1
2
3
4
5
# 查看文件每行的最后修改者
git blame file.txt

# 查看特定行的修改历史
git blame -L 10,20 file.txt

8.5 清理未跟踪的文件

1
2
3
4
5
6
7
8
# 预览将被删除的文件
git clean -n

# 删除未跟踪的文件
git clean -f

# 删除未跟踪的目录
git clean -fd

九、Git 命令速查表

操作 命令
初始化仓库 git init
克隆仓库 git clone <url>
查看状态 git status
添加文件 git add <file>
提交更改 git commit -m "msg"
查看历史 git log --oneline
创建分支 git branch <name>
切换分支 git checkout <name>
合并分支 git merge <branch>
推送远程 git push origin <branch>
拉取远程 git pull origin <branch>
添加远程 git remote add origin <url>
撤销修改 git restore <file>
回退版本 git reset --hard <commit>
暂存进度 git stash save "msg"
恢复暂存 git stash pop
挑选提交 git cherry-pick <hash>
查看差异 git diff
打标签 git tag -a v1.0 -m "msg"
清理文件 git clean -fd

十、最佳实践

  1. 小步提交 — 每次提交只做一件事,方便回滚
  2. 清晰的提交信息 — 格式:类型: 描述,如 feat: 添加搜索功能
  3. 频繁推送 — 每天至少推一次,避免数据丢失
  4. 先拉后做 — 开始工作前先 git pull 确保最新
  5. 使用分支 — 新功能在独立分支开发,合并前测试
  6. 定期备份 — 远程仓库就是备份,不要只依赖本地
  7. 善用 .gitignore — 不提交临时文件、配置文件、构建产物

附录:常用提交类型

类型 说明
feat 新功能
fix 修复 bug
docs 文档变更
style 代码格式(不影响逻辑)
refactor 重构(非新功能/非修复)
test 测试相关
chore 构建过程或辅助工具变动
perf 性能优化
使用 Hugo 构建
主题 StackJimmy 设计