可观测学堂

可观测问答

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

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

如何更换 Git 默认的提交信息编辑器

更换 Git 默认编辑器:git config --global core.editor,如 VS Code 用 "code --wait",nano 直接写 nano,Vim 写 vim。--wait 类参数保证 Git 等编辑器关闭后再继续。

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

如何有选择地合并(摘取)另一个分支的改动

选择性合并的手段:整个提交用 git cherry-pick;单个文件用 git checkout 分支 -- 路径;文件内部分改动用 git checkout -p 交互挑选;不想提交先合试用 git merge --no-commit --no-ff。

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

如何查看 Git 的全局配置

查看全局 Git 配置:git config --global --list;看全部生效配置(含来源)用 git config --list --show-origin;查单个值用 git config --get user.email。配置文件在 ~/.gitconfig。

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

如何把最近 N 个提交压缩成一个

压缩最近 N 个提交:git rebase -i HEAD~N,把除第一条外的 pick 全改成 squash 或 fixup,保存后编辑最终提交信息。已推送需 --force-with-lease 强推;纯本地操作零风险。

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

如何 stash 未跟踪的新文件

git stash 默认不包含未跟踪文件,加 -u(--include-untracked):git stash -u;连 .gitignore 忽略的文件也要收用 -a(--all)。只收未跟踪文件可用 git stash push -u -- <路径>。

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

如何给历史提交补打标签

给旧提交打标签:git log 找到提交哈希,git tag -a <标签名> <哈希> -m "说明",然后 git push origin <标签名> 推送。标签指向提交而非分支,补打历史版本标签完全合法。

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

误用了 git commit --amend 怎么撤销

撤销 amend:git reflog 找到 amend 前的提交哈希,git reset --soft <原提交哈希> 即可恢复。amend 只是生成了新提交,原提交仍在 reflog 中,30 天内随时可回。

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

如何撤销 git add 操作(取消暂存)

撤销暂存:git restore --staged <文件>(Git 2.23+)或旧语法 git reset HEAD <文件>;全部取消暂存用 git restore --staged .。只动暂存区,工作区改动原样保留。

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

如何撤销已经完成的 git rebase

rebase 完成后想撤销:git reflog 找到 rebase 前的分支顶端(通常是 rebase 动作记录上方的条目),git reset --hard <哈希> 恢复。rebase 不改写对象只新建提交,原历史在 reflog 窗口期内都可找回。

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

如何撤销 git reset 操作

撤销 reset:git reflog 找到 reset 前的提交哈希,git reset --hard <哈希> 拨回。soft/mixed reset 后改动还在工作区/暂存区可直接重提;hard reset 丢弃的提交也能靠 reflog 在 30 天内找回。

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

撤销最近一次提交的四种方式

撤销最近提交按需求选:保留改动到暂存区 git reset --soft HEAD^;保留到工作区 git reset HEAD^;彻底丢弃 git reset --hard HEAD^;只想修正内容用 git commit --amend。已推送用 git revert。

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

如何撤销已经推送的提交

撤销已推送提交的安全做法是 git revert <哈希>:生成反向提交,不改写历史,push 后对协作者零影响。只有在确认无人拉取过、或个人分支上,才可用 reset + force-with-lease 强推。