跳转至

30- Git 与 GitHub 项目管理 📦

前提条件 ✅

  • 已完成自动化部署与镜像管理(Packer + Ansible 流程已建立)
  • 以 ops 用户登录(具有 sudo 权限)
  • 系统运行在 Debian 12 Bookworm
  • 需要 GitHub 账号(建议创建个人或组织账号,用于后续协作)
  • 全局约定:主机名 LinuxDC,IP 192.168.1.100

详细步骤 🛠️

  1. 安装 Git 并基本配置
sudo apt update
sudo apt install -y git
git --version

全局配置(只执行一次):

git config --global user.name "Ops User"
git config --global user.email "ops@linuxdc.local"
git config --global core.editor "vim"
git config --global init.defaultBranch main
git config --list

  1. 创建本地仓库与基本操作
mkdir ~/my-project && cd ~/my-project
git init
echo "# My First Project" > README.md
git add README.md
git commit -m "Initial commit: add README"

查看状态与历史:

git status
git log --oneline --graph

  1. 连接 GitHub 远程仓库

在 GitHub 网站创建新仓库(例如 my-project,不要初始化 README)

添加远程并推送:

git remote add origin git@github.com:你的用户名/my-project.git
# 或 HTTPS:git remote add origin https://github.com/你的用户名/my-project.git
git branch -M main
git push -u origin main

  1. SSH 密钥认证(推荐,避免每次输入密码)

生成密钥对:

ssh-keygen -t ed25519 -C "ops@linuxdc.local"
# 默认回车保存到 ~/.ssh/id_ed25519

添加公钥到 GitHub:

cat ~/.ssh/id_ed25519.pub
# 复制内容 → GitHub → Settings → SSH and GPG keys → New SSH key

测试:

ssh -T git@github.com
# 成功显示:Hi username! You've successfully authenticated...

  1. 常用 Git 工作流(生产级推荐)

  2. 分支模型(Git Flow 简化版):

    • main:生产分支,只合并已测试代码
    • develop:开发集成分支
    • feature/*:新功能
    • hotfix/*:紧急修复

示例:

git checkout -b feature/add-backup-script
# 修改文件...
git add .
git commit -m "feat: add daily backup script"
git push origin feature/add-backup-script

创建 Pull Request(GitHub 网页操作),Review 后合并到 develop/main。

  1. Git 高级技巧(运维常用)

  2. 忽略文件(.gitignore):

    echo "*.log" >> .gitignore
    echo "/backup/" >> .gitignore
    git add .gitignore
    git commit -m "chore: add .gitignore"
    

  3. 回滚提交:

    git log --oneline
    git revert HEAD          # 撤销最新提交
    git reset --hard HEAD~1  # 危险!彻底丢弃最新提交
    

  4. 子模块(管理多个仓库):

    git submodule add https://github.com/用户名/ansible-roles.git roles/external
    git submodule update --init --recursive
    

  5. 标签(版本标记):

    git tag -a v1.0.0 -m "Release v1.0.0"
    git push origin v1.0.0
    

  6. GitHub 项目管理最佳实践

  7. 使用 Issues + Projects(Kanban 看板)跟踪任务

  8. Pull Request Template(创建 .github/pull_request_template.md)
  9. GitHub Actions(CI/CD):后续可扩展自动化测试、部署
  10. 保护 main 分支:Settings → Branches → Add rule → Require pull request reviews

实践任务 🎯

  1. 创建 GitHub 仓库 my-debian-ops,克隆到本地,添加 README.md 并推送
  2. 配置 SSH 密钥,验证 git push 无需密码
  3. 创建 feature/add-logrotate 分支,添加 logrotate 配置文件,提交并推送,创建 Pull Request
  4. 在本地模拟冲突:修改同一文件不同行,pull → 手动解决冲突 → commit → push

自测问题 ❓

  1. git config --global init.defaultBranch main 的作用是什么?
  2. SSH 密钥认证相比 HTTPS 的主要优势是什么?
  3. git revert 和 git reset 的区别是什么?什么时候用哪个?
  4. 为什么生产环境中建议保护 main 分支并要求 Pull Request 审核?

总结 📌

Git + GitHub 是现代运维协作、版本控制、配置即代码的核心工具。
本章建立了从本地仓库 → 远程协作 → 分支工作流 → 项目管理的完整流程。
后续考点总结、学习计划、运维文档都将直接使用 Git 仓库管理,实现知识与配置的可追溯、可协作、可审计。