可观测学堂

可观测问答

聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Git 提交历史与版本恢复示意
技术指南

如何恢复被删除(drop)的 stash

恢复被 drop/clear 的 stash:git fsck --unreachable 找孤立提交,逐个 git show 确认后用 git stash apply <哈希> 恢复。时间窗口有限(gc 前),重要改动应尽早转成分支。

Git 分支协作与合并示意
技术指南

如何用另一个分支完全替换 main 分支

完全替换 main:git checkout main && git reset --hard <替换分支>,然后 git push --force-with-lease 强推。协作者需重置本地。更安全的方式是 merge -s ours 保留历史连续性。

Git 提交历史与版本恢复示意
技术指南

如何查看文件的 Git 变更历史

查看文件变更历史:git log --follow -- <文件路径>(--follow 跨重命名追踪);加 -p 看每次的具体改动,--stat 看统计。git blame 文件 看每一行最后是谁改的。

Git 分支协作与合并示意
技术指南

Git 分支命名的常用规范

主流分支命名规范:feature/、bugfix/、hotfix/、release/ 前缀加短横线描述(如 feature/user-auth),可带 issue 号(feature/123-login)。全小写、用连字符、不含空格。Git Flow 和 GitHub Flow 各有惯例。

Git 分支协作与合并示意
技术指南

git merge 的 --no-ff 参数有什么作用

--no-ff 禁止快进合并:即使可以直接快进,也强制创建一个合并提交。作用是保留"这里曾经合并过一个功能分支"的历史痕迹,让分支拓扑清晰可见,回滚整组改动更容易。

Git 分支协作与合并示意
技术指南

什么是 Git 的 cherry-pick

cherry-pick 是把另一个分支上的指定提交"摘"到当前分支:git cherry-pick <哈希>,改动会以新提交应用。适合热修复回合、跨分支搬个别提交;会产生新哈希,滥用会让历史难追溯。

Git 提交历史与版本恢复示意
技术指南

什么是 Git 中的 HEAD

HEAD 是指向当前工作位置的特殊指针:正常情况下指向当前分支(如 main),分支再指向最新提交;检出具体提交或 tag 时进入游离 HEAD(detached HEAD)状态。HEAD~1、HEAD^ 等相对引用都以它为基准。

Git 分支协作与合并示意
技术指南

什么时候该用 git rebase 而不是 git merge

rebase 用于:同步主干到个人功能分支(线性历史)、合并前整理提交(squash 杂乱 WIP)、搬运提交串。merge 用于:共享分支合并、需要保留真实合并记录的场景。铁律:已推送且有人使用的历史不 rebase。

网络请求路由与访问控制示意
技术指南

云防火墙如何放行监控拨测流量(观测云)

以 DigitalOcean Cloud Firewall 为例,按拨测节点来源、目标端口和协议配置最小范围放行,并结合防火墙日志与拨测结果排查超时。

Python 中如何逐行读取文件? cover
概念指南

Python 中如何逐行读取文件?

Python 逐行读取文件的最佳方式是直接迭代文件对象:with open('file.txt') as f: for line in f: ...。内存友好,自动关闭文件。本文介绍各种逐行读取方式。

Python 中如何读取标准输入(stdin)? cover
概念指南

Python 中如何读取标准输入(stdin)?

Python 读取 stdin 的三种方式:input() 读单行、sys.stdin 逐行/全量读取、fileinput 模块处理管道输入。本文对比各种方式及适用场景。

如何把 Docker 容器的日志重定向到指定文件? cover
概念指南

如何把 Docker 容器的日志重定向到指定文件?

Docker 日志默认写入 /var/lib/docker/containers 下的 JSON 文件。自定义日志位置可用 syslog/journald 日志驱动,或 docker logs 命令导出,或直接挂载卷让应用写文件。