Git版本控制实用指南
1. 什么是Git?
Git是目前最流行的分布式版本控制系统,由Linux之父Linus Torvalds开发。它可以:
- 追踪代码变更历史
- 支持多人协作开发
- 方便地回退到任意历史版本
- 创建分支进行并行开发
2. 基础配置
2.1 安装Git
- Windows:下载Git for Windows
- Linux:
sudo apt-get install git - Mac:
brew install git
2.2 初始配置
# 配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 查看配置
git config --list
3. 基本操作
3.1 创建仓库
# 初始化新仓库
git init
# 克隆远程仓库
git clone https://github.com/user/repo.git
3.2 工作流程
# 1. 查看状态
git status
# 2. 添加文件到暂存区
git add file.txt # 添加单个文件
git add . # 添加所有文件
# 3. 提交更改
git commit -m "提交说明"
# 4. 推送到远程仓库
git push origin main
3.3 查看历史
# 查看提交历史
git log
git log --oneline # 简洁模式
git log --graph # 图形化显示
# 查看某次提交的详细信息
git show commit_hash
4. 分支管理
4.1 基本操作
# 查看分支
git branch
# 创建分支
git branch feature-x
# 切换分支
git checkout feature-x
# 或使用新命令
git switch feature-x
# 创建并切换到新分支
git checkout -b feature-y
4.2 合并分支
# 切换到目标分支
git checkout main
# 合并其他分支
git merge feature-x
# 删除已合并的分支
git branch -d feature-x
4.3 解决冲突
当合并时出现冲突:
# 1. Git会标记冲突文件
# 2. 手动编辑冲突文件,选择保留的内容
# 3. 标记为已解决
git add conflicted_file.txt
# 4. 完成合并
git commit -m "解决合并冲突"
5. 远程仓库操作
5.1 添加远程仓库
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 查看远程仓库
git remote -v
# 修改远程仓库URL
git remote set-url origin new_url
5.2 同步操作
# 拉取最新代码
git pull origin main
# 等价于
git fetch origin
git merge origin/main
# 推送本地分支
git push origin feature-x
6. 撤销与回退
6.1 撤销工作区修改
# 撤销单个文件的修改
git checkout -- file.txt
# 撤销所有修改
git checkout -- .
6.2 撤销暂存
# 取消暂存
git reset HEAD file.txt
6.3 回退版本
# 回退到上一个版本
git reset --hard HEAD^
# 回退到指定版本
git reset --hard commit_hash
# 如果误操作,可以通过reflog恢复
git reflog
git reset --hard HEAD@{n}
7. 实用技巧
7.1 Stash - 暂存工作
# 暂存当前修改
git stash
# 查看暂存列表
git stash list
# 恢复暂存
git stash pop
# 应用但不删除暂存
git stash apply
7.2 Cherry-pick - 选择性合并
# 将某次提交应用到当前分支
git cherry-pick commit_hash
7.3 Rebase - 变基
# 将当前分支变基到main
git rebase main
# 交互式rebase(合并多个提交)
git rebase -i HEAD~3
7.4 标签管理
# 创建标签
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 # 推送所有标签
8. .gitignore文件
创建.gitignore文件来忽略不需要追踪的文件:
# Python
__pycache__/
*.pyc
*.pyo
*.egg-info/
# 虚拟环境
venv/
env/
# IDE
.vscode/
.idea/
# 系统文件
.DS_Store
Thumbs.db
# 编译文件
*.o
*.exe
9. 工作流模型
9.1 Git Flow
- main:生产环境代码
- develop:开发分支
- feature/:功能分支
- release/:发布分支
- hotfix/:紧急修复分支
9.2 GitHub Flow
简化流程:
- 从main创建分支
- 开发并提交
- 创建Pull Request
- 代码审查
- 合并到main
10. 常见问题
10.1 修改最后一次提交
# 修改提交信息
git commit --amend -m "新的提交信息"
# 补充文件到上次提交
git add forgotten_file.txt
git commit --amend --no-edit
10.2 清理历史
# 清理未追踪的文件
git clean -f
# 包括目录
git clean -fd
11. 最佳实践
- 频繁提交:小步快跑,每完成一个小功能就提交
- 写好提交信息:清晰描述做了什么改动
- 善用分支:不要直接在main上开发
- 定期同步:及时pull最新代码
- 代码审查:通过PR进行code review
12. 学习资源
- 官方文档:git-scm.com
- 交互式教程:learngitbranching.js.org
- 可视化工具:GitKraken, SourceTree
- 在线练习:GitHub Learning Lab
13. 总结
Git是现代软件开发的必备工具,虽然命令众多,但常用的就那么几个。建议从基础命令开始,在实践中逐步掌握更多高级功能。
配合GitHub使用,效果更佳!