博客Git版本管理:代码改崩了再也不怕回滚
说个真实的事:去年我有个博客主题改坏了,想恢复到之前的版本,结果发现根本没备份!只能硬着头皮重新改,折腾了大半天才弄好。
从那以后我就长记性了,把博客代码全部用Git管理起来。现在改代码随心所欲,改崩了就回滚,再也不用担心搞坏网站了。
今天就聊聊怎么用Git管理博客代码,这个技能真的能救命。
为什么博客需要版本控制?
很多博主的博客就是一堆文件放在服务器上,改了就改了,没有历史记录。这样做有几个问题:
- 代码改崩了无法恢复
- 不知道改了什么、什么时候改的
- 多人协作容易冲突
- 换电脑或重装系统容易丢代码
Git完美解决这些问题。每次修改都有记录,想回到任何时候的版本都可以。而且Git是分布式的,你可以把代码同时存在本地、服务器、GitHub等多个地方,想丢都丢不了。
Git基础概念速览
如果你完全不懂Git,我先用最简单的话解释一下:
| 概念 | 解释 | 类比 |
|---|---|---|
| 仓库(Repository) | 存放代码的地方 | 一个文件夹 |
| 提交(Commit) | 保存一次修改 | 游戏存档 |
| 分支(Branch) | 独立的开发线 | 平行世界 |
| 合并(Merge) | 把分支合到一起 | 世界线收束 |
| 远程仓库(Remote) | 网上的备份 | 云存档 |
核心操作就这几个:
- `git add`:把修改的文件加入暂存区
- `git commit`:提交修改,相当于存档
- `git push`:推送到远程仓库
- `git pull`:从远程仓库拉取更新
- `git log`:查看提交历史
博客Git管理实战步骤
第一步:在服务器安装Git
宝塔面板安装很简单:
```bash
CentOS
yum install git -y
Ubuntu/Debian
apt install git -y
```
第二步:初始化仓库
SSH登录服务器,进入博客根目录:
```bash
cd /www/wwwroot/你的博客目录
git init
```
这样这个目录就变成Git仓库了。
第三步:创建.gitignore文件
有些文件不需要纳入版本管理,比如上传的图片、缓存文件等。创建`.gitignore`文件:
```
用户上传的文件
zb_users/upload/
zb_users/avatar/
缓存
zb_users/cache/
日志
zb_users/logs/
配置文件(包含密码等敏感信息)
zb_users/c_option.php
```
第四步:首次提交
```bash
git add .
git commit -m "初始提交:博客代码基线"
```
这样就把当前所有代码都纳入版本管理了。
第五步:关联远程仓库
在GitHub或Gitee上创建一个私有仓库(私有!别公开),然后关联:
```bash
git remote add origin https://github.com/你的用户名/你的仓库.git
git push -u origin main
```
这样代码就有云端备份了。
日常工作流程
有了Git之后,你的日常工作流程应该是这样的:
改代码前先拉取最新版本:
```bash
git pull
```
修改代码,改完提交:
```bash
git add .
git commit -m "修改主题头部样式"
```
定期推送到远程:
```bash
git push
```
养成这个习惯,你的每次修改都有记录。
代码改崩了怎么回滚?
这是Git最强大的地方!假设你改了一段代码,网站崩了,想恢复到上一个版本:
查看提交历史:
```bash
git log --oneline
```
输出类似这样:
```
a1b2c3d (HEAD -> main) 修改主题头部样式
d4e5f6g 上周的修改
h7i8j9k 初始提交
```
回滚到指定版本:
```bash
回滚到上一个版本
git reset --hard HEAD^
回滚到指定版本
git reset --hard h7i8j9k
```
执行完命令,代码就恢复到那个版本了。整个过程几秒钟,比重新改代码快一万倍。
分支管理:大胆实验
如果你想改动比较大,怕改坏了,可以用分支:
```bash
创建并切换到新分支
git checkout -b feature/新功能
在新分支上随便改...
改完了,测试没问题,切回主分支合并
git checkout main
git merge feature/新功能
如果改崩了,直接删除分支就行
git branch -d feature/新功能
```
分支就像是平行世界,你在里面随便折腾都不会影响主世界。
服务器自动备份方案
如果你比较懒,可以设置自动备份。写个简单的shell脚本:
```bash
#!/bin/bash
cd /www/wwwroot/你的博客目录
git add .
git commit -m "自动备份 $(date +%Y%m%d)"
git push
```
然后用crontab设置定时任务,每天自动提交一次:
```bash
crontab -e
添加这行,每天凌晨3点执行
0 3 * * * /你的脚本路径/backup.sh
```
这样就算你忘了手动备份,服务器也会帮你保存代码。
常见问题FAQ
Q:Git占用空间大吗?
A:纯文本的代码占用很小,几万行代码也就几十MB。但如果你把图片也放进去了,那就会比较大。建议把上传的图片放到对象存储,不要放进Git仓库。
Q:私有仓库要钱吗?
A:GitHub私有仓库免费,Gitee也是免费的。完全够用,不用担心。
Q:服务器被黑了Git仓库怎么办?
A:这就是为什么要推送到远程仓库。即使服务器被删库,GitHub上还有备份。定期push,确保远程仓库是最新的。
Q:多台电脑怎么同步?
A:在一台电脑上push,另一台pull。Git会自动合并修改,如果有冲突会提示你手动解决。
Q:WordPress能用Git管理吗?
A:当然可以!方法一样。但WordPress插件太多,建议只管理主题和自定义代码,核心文件和插件可以忽略。
Q:Z-Blog的zb_users目录要提交吗?
A:zb_users里面有些是用户上传的内容和配置,建议只提交主题、插件代码,上传的文件和配置可以忽略。
推荐阅读
想学习更多博客运维技巧?添加微信15207283116,备注"博客运维",拉你进交流群!
需要了解更多使用技巧?
扫码加我微信,我来给你详细解答!
微信号:15207283116
(博客来的朋友优先通过!)
—— 本文仅供参考,具体以实际情况为准 ——
还木有评论哦,快来抢沙发吧~