Git 版本控制教程
简介
Git 是一个分布式版本控制系统,用于追踪文件变化、协调多人协作开发。被广泛应用于软件工程项目中。
Git 核心概念
- 仓库 (Repository) - 项目的版本数据库
- 提交 (Commit) - 记录文件快照
- 分支 (Branch) - 独立的开发线
- 合并 (Merge) - 合并不同分支
安装 Git
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install git
Linux (CentOS/RHEL)
sudo yum install git
macOS
brew install git
Windows
下载并安装:Git for Windows
验证安装
git --version
Git 配置
设置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
查看配置
git config --list
git config user.name
git config user.email
生成 SSH 密钥
ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub
配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
基础操作
初始化仓库
git init
git init my-project
克隆远程仓库
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
查看状态
git status
添加文件到暂存区
git add filename.txt
git add . # 添加所有文件
git add -A # 添加所有文件(包括删除)
git add -p # 交互式添加
提交更改
git commit -m "提交信息"
git commit -am "添加并提交" # 仅适用于已跟踪文件
查看提交历史
git log
git log --oneline # 简洁模式
git log --graph # 图形化显示
git log -n 5 # 最近5条
查看差异
git diff # 工作区 vs 暂存区
git diff --staged # 暂存区 vs 上次提交
git diff HEAD # 工作区 vs HEAD
撤销操作
git checkout -- filename # 撤销工作区修改
git reset HEAD filename # 取消暂存
git reset --soft HEAD~1 # 保留更改在暂存区
git reset --mixed HEAD~1 # 保留更改在工作区(默认)
git reset --hard HEAD~1 # 删除上次提交(危险)
分支管理
查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
创建分支
git branch feature-login
git checkout -b feature-login # 创建并切换
git switch -c feature-login # 同上(现代命令)
切换分支
git checkout feature-login
git switch feature-login
删除分支
git branch -d feature-login # 安全删除
git branch -D feature-login # 强制删除
合并分支
git checkout main
git merge feature-login
解决冲突
当合并冲突时,Git 会在文件中标记冲突内容:
<<<<<<< HEAD
当前分支的内容
=======
要合并的分支内容
>>>>>>> feature-login
手动编辑解决冲突后:
git add filename.txt
git commit -m "解决冲突"
储藏更改
git stash # 储藏当前更改
git stash list # 查看储藏列表
git stash pop # 恢复并删除储藏
git stash apply # 仅恢复储藏
远程协作
查看远程仓库
git remote -v
添加远程仓库
git remote add origin https://github.com/user/repo.git
git remote add upstream https://github.com/original/repo.git
推送代码
git push origin main
git push -u origin feature-login # 首次推送并设置上游
拉取代码
git pull origin main
git pull --rebase origin main # 使用 rebase 模式
获取更新
git fetch origin
git fetch --all
常用工作流
git clone git@github.com:user/repo.git
git checkout -b feature-new
git add .
git commit -m "添加新功能"
git push -u origin feature-new
Git 最佳实践
- 提交信息要清晰描述做了什么
- 小而频繁的提交比大而少的提交更好
- 合并前先 pull 最新代码
- 使用分支开发新功能
- 不要提交敏感信息到仓库