一、Git 安装与全局配置
1. 安装 Git
- Windows:下载 Git 官方安装包 Git for Windows
- Linux (Ubuntu):
sudo apt update
sudo apt install git
- macOS:
brew install git
2. 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.editor "vim"
git config --list
这些配置会记录每次提交的作者信息和默认编辑器,保持统一有助于团队协作。
3. 生成 SSH Key 连接远程仓库(可选但推荐)
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
cat ~/.ssh/id_rsa.pub
将公钥添加到 GitHub/Gitee 账户,可实现免密码推送。
二、项目初始化与首次提交
1. 初始化仓库
cd MyCppProject
git init
.git文件夹:Git 用来记录版本历史的隐藏目录- 初始化后仓库为空,需要添加文件并提交
2. 配置 .gitignore
C++ 项目常见编译输出和临时文件:
build/
*.o
*.obj
*.exe
*.log
*.tmp
避免将二进制文件和日志提交到仓库,保持仓库干净。
3. 添加文件并提交
git add .
git commit -m "Initial commit: project skeleton"
4. 查看状态与历史
git status # 查看暂存区和工作区状态
git log --oneline --graph --all
小技巧:
git log --graph --oneline --all可以直观查看分支和提交历史。
三、分支管理与协作流程
1. 创建、切换分支
git checkout -b feature/logger # 创建并切换到新分支
git checkout main # 切回主分支
2. 合并分支
git checkout main
git merge feature/logger
- 冲突处理:Git 会在文件中标记冲突区域,需要手动修改
- 合并策略:先 pull 更新主分支,减少冲突概率
3. 分支策略建议
- 主分支 (
main) 保持稳定 - 功能分支 (
feature/*) 用于新功能开发 - 修复分支 (
fix/*) 用于 bug 修复 - 实验分支 (
experiment/*) 用于尝试新方案
建议多人协作遵循 Git Flow 或 GitHub Flow,让分支管理有章可循。
四、远程仓库操作
1. 添加远程仓库
git remote add origin https://github.com/username/MyCppProject.git
2. 推送分支
git push -u origin main
git push -u origin feature/logger
3. 拉取更新
git pull origin main
4. 克隆仓库
git clone https://github.com/username/MyCppProject.git
5. fork 与 pull request
- fork 用于拷贝仓库到个人账号
- PR 用于向主仓库提交更改,便于代码评审
多人协作时,保持定期同步,减少冲突发生。
五、进阶操作技巧
1. 标签(Tag)管理
git tag -a v1.0 -m "Release version 1.0"
git push origin v1.0
标签用于标记发布版本,便于回溯和部署。
2. Rebase 与提交历史整理
git checkout feature/logger
git rebase main
将功能分支的提交移动到主分支最新位置,使历史更清晰。
3. Cherry-pick
git cherry-pick <commit_hash>
选择特定提交应用到当前分支,而无需合并整个分支。
4. Stash 临时保存修改
git stash
git stash pop
适用于临时切换分支,但不想提交当前修改的情况。
5. Reset 与 Revert
git reset --hard <commit_hash> # 回退到指定提交,慎用
git revert <commit_hash> # 生成新提交,撤销指定提交
Reset 改变历史,Revert 更安全,适合公共分支。
六、实战经验与注意事项
- 小步快跑:频繁提交比一次性大提交更容易排查问题
- 冲突处理:先理解差异再手动修改,避免直接覆盖
- 提交信息规范:建议用 “动词 + 描述”,如
Add logging module - 远程备份:经常推送,防止数据丢失
- 日志分析:
git log,git diff随时了解项目状态 - 团队协作:多人开发需明确分支策略和合并流程