可观测学堂

可观测问答

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

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

如何撤销还未推送的合并(merge)

撤销未推送的 merge:git reset --hard ORIG_HEAD(ORIG_HEAD 自动记录合并前的位置);或 git log 找到合并前提交再 git reset --hard <哈希>。冲突进行中想退出用 git merge --abort。

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

如何同步更新 GitHub 上 fork 的仓库

同步 fork 仓库:git remote add upstream <原仓库地址> 一次配置,之后 git fetch upstream && git merge upstream/main(或 rebase)再 push 到自己 fork。GitHub 网页也有 Sync fork 按钮一键同步。

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

如何批量修改多个提交的作者和邮箱

批量改提交作者/邮箱:推荐 git filter-repo --email-callback / --name-callback 重写全历史;老工具 git filter-branch --env-filter 可按旧邮箱条件替换。重写后需强推,协作者需重新克隆。

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

如何把 SVN 仓库迁移到 Git 并保留历史

SVN 迁移 Git 用 git svn clone:准备作者映射文件(users.txt),git svn clone --stdlayout --authors-file 完整转换历史、分支、标签,再清理引用推到 Git 远程。大仓库建议通宵跑。

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

如何只列出两个提交之间变化的文件名

列出两提交间变化的文件名:git diff --name-only A B;带状态(增删改)用 --name-status;只要统计用 --stat。分支间同样适用:git diff --name-only main..feature。

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

如何让已有的本地分支跟踪远程分支

设置跟踪关系:git branch --set-upstream-to=origin/<远程分支> <本地分支>;推送时顺便设置用 git push -u origin <分支>。设好后 git status 显示领先/落后,git pull/push 免参数。

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

.gitignore 如何忽略所有文件、只保留少数几个

白名单式 gitignore:先 忽略全部,再用 ! 逐个取反要保留的文件。注意目录要先用 !dir/ 放行才能保留其中文件;每行规则顺序敏感,后写的覆盖先写的。

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

本地分支与远程分支分叉了(diverged)怎么办

分叉说明两边都有对方没有的提交。查看分叉情况 git log --left-right --oneline main...origin/main;合并用 git pull(merge)或 git pull --rebase;确定远程为准则 git reset --hard origin/main。

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

如何把 hotfix 分支合并到正在开发的功能分支

hotfix 合入功能分支:git checkout 功能分支 && git merge hotfix 分支名(或 rebase)。功能分支拿到修复后继续开发,最终合并回 main 时 hotfix 已是共同祖先,不再冲突。

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

提示 "You have not concluded your merge (MERGE_HEAD exists)" 怎么办

该提示说明上一次合并未完成(冲突未解决完或没提交)。git status 查看冲突文件,解决后 git add + git commit 完成合并;不想合了用 git merge --abort 中止。

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

如何画出漂亮的 Git 分支图

命令行画分支图:git log --graph --oneline --all --decorate 是最常用的组合,可配置 git lg 别名。GUI 工具:GitKraken、Sourcetree、VS Code GitLens/Git Graph 插件效果更好。

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

Git 警告 "Pulling without specifying how to reconcile divergent branches is discouraged" 怎么消除

这个警告要求你明确 pull 的合并策略。消除方法三选一:git config --global pull.rebase false(merge)、true(rebase)或 pull.ff only(仅快进)。团队新手建议 ff only,个人项目随意。