跳转至

30. GitHub 项目配置与密钥管理

本章节提供在 RHEL 9(主机名 LinuxDC)上配置 Git 并与 GitHub 交互的完整指南,适用于以下两种常见场景:

  1. 在全新电脑上配置 Git 并上传全新项目到 GitHub
  2. 更换电脑后继续开发已有 GitHub 项目

示例项目名称:awesome-project
内容涵盖 SSH 密钥生成、Git 全局配置、远程仓库关联、自动化推送脚本建议、安全清理旧设备说明,以及常用命令速查表。


30.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 具有 root 或 sudo 权限(建议使用普通用户 testuser 操作 Git)。
  • 已订阅并启用 EPEL 仓库(参考第 5 章)。
  • GitHub 账户已注册并拥有个人访问令牌(PAT)或 SSH 密钥访问权限。

💡 提示:强烈推荐使用 SSH 协议而非 HTTPS,避免每次推送输入用户名/密码或 PAT。在 RHEL 10 中,Git 支持更多内置的凭证管理器和 SSH 增强选项。


30.2 安装与基本配置

30.2.1 安装 Git

dnf install -y git
git --version  # 验证安装成功

30.2.2 配置 Git 全局信息

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git config --global init.defaultBranch main  # 设置默认主分支为 main
git config --global core.editor vim  # 设置默认编辑器为 vim
git config --list  # 查看所有配置

30.3 场景 1:全新电脑上传新项目到 GitHub

步骤 1:生成 SSH 密钥对

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_github
# 直接回车使用默认路径,无需设置密码(或设置强密码后需 ssh-agent 管理)

步骤 2:将公钥添加到 GitHub

  1. 复制公钥:

    cat ~/.ssh/id_ed25519_github.pub
    

  2. 登录 GitHub → Settings → SSH and GPG keys → New SSH key → 粘贴公钥并保存。

步骤 3:测试 SSH 连接

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

步骤 4:创建并初始化项目

mkdir awesome-project && cd awesome-project
git init
echo "# awesome-project" > README.md
git add README.md
git commit -m "Initial commit"

步骤 5:关联远程仓库并推送

git remote add origin git@github.com:your-username/awesome-project.git
git branch -M main
git push -u origin main

30.4 场景 2:更换电脑后继续开发已有项目

步骤 1:克隆仓库(使用 SSH)

git clone git@github.com:your-username/awesome-project.git
cd awesome-project

步骤 2:验证 SSH 密钥(若未配置)

重复 30.3 中的步骤 1–3,确保当前电脑的 SSH 公钥已添加到 GitHub。

步骤 3:拉取最新代码

git pull origin main

30.5 自动化推送脚本建议

创建一键推送脚本(适用于频繁提交场景):

vim ~/git-push.sh
# 内容:
#!/bin/bash
if [ -z "$1" ]; then
    echo "请输入提交信息"
    exit 1
fi
git add .
git commit -m "$1"
git push origin main

使用:

chmod +x ~/git-push.sh
~/git-push.sh "fix bug in login page"


30.6 安全清理旧设备

更换电脑后,应从旧设备移除访问权限:

  1. 删除旧 SSH 密钥:
  2. 本地:rm ~/.ssh/id_ed25519_github*
  3. GitHub:Settings → SSH and GPG keys → 删除旧密钥

  4. 撤销旧 PAT(若使用 HTTPS):

  5. GitHub → Settings → Developer settings → Personal access tokens → 删除旧令牌

  6. 检查旧设备是否仍有克隆仓库:

  7. 删除本地仓库文件夹
  8. 确保旧设备不再有 ~/.ssh/ 中的对应私钥

30.7 常用命令速查表

功能 命令
查看当前分支与状态 git status
切换分支 git checkout main / git switch main
创建并切换新分支 git checkout -b feature/new-login
合并分支 git checkout main && git merge feature/new-login
查看提交历史 git log --oneline --graph --decorate
撤销最后一次提交(保留更改) git reset HEAD^
强制推送(覆盖远程历史) git push --force origin main (谨慎使用)
拉取并合并远程更改 git pull origin main
暂存所有更改 git add .
提交更改 git commit -m "message"
丢弃工作区更改 git restore .
查看远程仓库 git remote -v
添加远程仓库 git remote add origin git@github.com:username/repo.git

30.8 常见问题与排查

  • 问题 1Permission denied (publickey)
    解决:确认公钥已添加到 GitHub,私钥权限为 600(chmod 600 ~/.ssh/id_ed25519_github),测试 ssh -T git@github.com

  • 问题 2fatal: refusing to merge unrelated histories
    解决git pull origin main --allow-unrelated-histories(仅首次合并时使用)。

  • 问题 3:推送被拒绝(non-fast-forward)
    解决:先 git pull 合并远程更改,或强制推送(git push --force)但小心覆盖他人提交。

  • 问题 4:旧电脑仍有访问权限
    解决:立即从 GitHub 删除对应 SSH 密钥或 PAT。


🧾 总结
本章提供了 GitHub 项目配置与密钥管理的完整、标准流程,覆盖全新配置、项目迁移、多设备协作、自动化脚本以及安全清理。熟练掌握这些步骤,可显著提升代码管理效率与安全性,是 Linux 运维人员与开发者的核心技能之一。