可观测学堂

可观测问答

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

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

如何向 Git 仓库提交空目录

Git 不跟踪空目录,惯例做法是在目录里放一个 .gitkeep 空文件再提交;如果目录内容应被忽略,配合 .gitignore 写 logs/ 与 !logs/.gitkeep 两条规则,保留目录结构同时忽略产物。

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

如何把某个历史提交拆分成多个提交

拆分历史提交用交互式 rebase:git rebase -i <目标提交>^,把该条目标记为 edit;暂停后 git reset HEAD^ 打散该提交,分多次 git add -p + git commit,最后 git rebase --continue 完成。

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

如何修改单个提交的作者信息

改最近一次提交的作者:git commit --amend --author="名字 <邮箱>"。改历史中间的提交:git rebase -i <提交>^ 标记 edit,再 amend --author。批量改用 git filter-repo --email-callback。改完需强推。

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

Git 提交信息(commit message)写错了怎么修改

最近一次提交用 git commit --amend -m "新信息";已推送且无人拉取时可强推:git push --force-with-lease。历史中间的提交信息用 git rebase -i 标记 reword 修改。共享分支不要改写已推送历史。

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

如何检出(切换到)远程 Git 分支

检出远程分支:git fetch 后 git checkout <分支名>——本地不存在时会自动基于 origin/<分支名> 创建同名本地分支并跟踪。老写法 git checkout -b <名> origin/<名>;只看代码不建分支用 git checkout origin/<名>。

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

如何 cherry-pick 多个提交

cherry-pick 多个提交:连续的用范围 git cherry-pick A^..B(含 A)或 A..B(不含 A);不连续的逐个列出 git cherry-pick A B C。冲突时解决后 git cherry-pick --continue。

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

如何把 Git 仓库克隆到指定目录

克隆到指定目录:git clone <仓库地址> <目录名>;克隆到当前目录(已存在的空目录)用 git clone <地址> .(注意句点)。目标目录必须不存在或为空。

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

如何克隆仓库的所有远程分支

git clone 默认已拉取所有分支的数据,只是只为默认分支建了本地分支。检出任意远程分支用 git checkout <分支名>。完整镜像用 git clone --mirror(裸仓库,含全部引用),迁移仓库时用它。

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

Git 如何提交仅大小写变化的文件改名

大小写不敏感系统(Windows/macOS 默认)上,直接把 name.txt 改成 Name.txt Git 检测不到。用 git mv name.txt Name.txt 强制登记;不行就两步走:先 git mv 到临时名提交,再 git mv 回目标名提交。

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

如何比较本地分支与远程分支的差异

先 git fetch 刷新远程引用,再 git diff main origin/main 看文件差异、git log main..origin/main 看远程多出的提交、git log origin/main..main 看本地多出的提交。git status 也会提示领先/落后数。

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

如何比较两个 Git 分支的差异

比较两个分支:git diff 分支A 分支B 看代码差异;git log 分支A..分支B 看 B 独有的提交;git diff A...B(三点)看 B 自分岔点起引入的改动。合并前评审用三点更准确。

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

如何让 Git 只在本机忽略某些文件(不共享 .gitignore)

本机私有忽略两种方式:未跟踪文件写入 .git/info/exclude(语法同 .gitignore,不进版本库);已跟踪文件的本地改动用 git update-index --skip-worktree <文件>。个人 IDE 配置也可放全局 ~/.gitignore_global。