从零到熟练使用 Git 管理项目

57 阅读3分钟

一、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 loggit diff 随时了解项目状态
  • 团队协作:多人开发需明确分支策略和合并流程