🐙Git、GitHub 与备份
您的代码值得一张安全网。用 Git 给一切做版本管理,用 GitHub 把它存到别处并分享出去,再加一套真正的备份策略,让您永远不丢东西, 哪怕机器烧了。
您刚装好一个会飞快写代码的 agent。在它碰任何要紧东西之前,我们先把网铺好:Git,让每一次改动都可回退;以及 GitHub,让您的工作活在这台小盒子之外的地方。因为一台迷你 PC 可能会烧掉、被偷,或者吃下一个多余的 rm。而您的代码,绝不该跟着一起消失。
为什么这事不容商量(尤其是有了 agent)
一个代码 agent 跑得快,而且很自信。多数时候这很棒;偶尔它会弄坏点什么。Git 把这变成一件无关紧要的小事:
- 每一次提交都是一个还原点。 agent 把一切都搞砸了?
git restore或git reset,一秒钟您就回到了之前的状态。这是终极的「撤销」。 - 您能看清究竟改了什么。
git diff一行一行地告诉您 agent 动了哪里。您在点头前先审一遍, 这就是这门手艺的核心(见 保护访问安全)。 - GitHub 让您的代码远离灾难。 硬盘坏了、被偷了、误操作:您的代码在 GitHub 上,完好无损。您能在任何一台机器上用一条命令把它取回来。
- 而且您可以分享。 给同事开权限、多人协作、开源出去:全都经由 GitHub。
在机器上配置 Git
三行,一劳永逸。Git 需要知道您是谁(这会签署您的提交):
git config --global user.name "您的姓名"
git config --global user.email "[email protected]"
# 几个明智的默认值
git config --global init.defaultBranch main # 默认分支叫 "main"
git config --global pull.rebase false # 可预期的 pull 行为
让机器获得访问 GitHub 的权限
您的机器得向 GitHub 证明它有权推送。两条路;选您顺眼的那条。
最简单的:GitHub CLI(gh)
官方工具 gh 替您处理认证,连令牌也一起搞定。
# 安装 gh(Ubuntu 官方方法)
sudo apt install -y gh
# 把机器连到您的账号, 回答问题,它会打开浏览器
gh auth login
选「GitHub.com」,再选「SSH」作为协议:gh 会自动生成并安装密钥。完成后,您的机器就能克隆、推送、创建仓库了。这是我推荐的入门选项。
手动选项:一把专属于这台机器的 SSH 密钥
如果您想完全掌控,就创建一把专属于这台迷你 PC 的 SSH 密钥(一机一钥更稳妥):
ssh-keygen -t ed25519 -C "mini-pc-github"
cat ~/.ssh/id_ed25519.pub # 复制显示出来的内容
把公钥粘到 GitHub → Settings → SSH and GPG keys → New SSH key。然后验证:
ssh -T [email protected] # 应该用您的 GitHub 用户名跟您打招呼
您的第一个仓库,以及用它的 agent
cd ~/mon-projet
git init
# 那个告诉 git 要忽略什么的文件, 至关重要
cat > .gitignore <<'EOF'
node_modules/
.env
*.log
dist/
EOF
git add -A
git commit -m "Premier jet"
# 创建远端仓库并推送(用 gh,一行就够)
gh repo create mon-projet --private --source=. --push
到位之后,让您的 agent 替您管 git:「定期提交,写清晰的提交信息」「为这个功能创建一个分支」「开一个 pull request」。您甚至可以把它写进您的 记忆文件:「每一步验证通过后提交,使用约定式的提交信息,未经我同意不要推到 main。」
备份:3-2-1 法则
GitHub 保住了您的代码。但您的迷你 PC 里还装着许多不在 git 里的东西:您的 .env 文件、您的数据库、生成的数据、系统配置。对这些,我们套用备份的黄金法则:
决定备份什么
- 代码 → 已经在 GitHub 上,无需多做。
- 密钥(
.env、各种 key)→ 加密备份,绝不明文。 - 真正要紧的数据(数据库、生成的文件、自己写的配置)。
- 不要备份 Ollama 模型和
node_modules:它们能重新下载,没必要备份。
选一个工具和一个目的地
restic 是理想的工具:加密、去重、增量备份。您可以把它发往一个 NAS、另一块硬盘,或者云存储。
sudo apt install -y restic
# 初始化一个备份仓库(例如:发往挂载的 NAS)
restic -r /mnt/nas/backups init
# 第一次备份
restic -r /mnt/nas/backups backup ~/projets ~/configs
如果想瞄准云存储(客户端侧加密),rclone 是一个很好的替代方案。
自动化, 手动备份迟早会被忘掉
安排一个每日的 systemd 定时器或 cron 任务。您的 agent 两分钟就能写好:让它「创建一个 systemd 服务,每天凌晨 3 点跑我的 restic 备份」。
测试您的恢复
一个您从未恢复过的备份不是备份, 那是一种指望。至少做一次这个练习:restic -r /mnt/nas/backups restore latest --target /tmp/test-restore,然后确认您的文件确实都在。