可观测学堂

可观测问答

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

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

git reset 的 soft、mixed、hard 三种模式怎么选

git reset 三种模式:--soft 只移动分支指针(改动全留在暂存区),--mixed(默认)同时重置暂存区(改动留在工作区),--hard 连工作区一起重置(改动全丢)。撤销提交用 soft/mixed,丢弃代码才用 --hard。

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

如何移除 Git 子模块(submodule)

移除子模块四步:git submodule deinit -f <路径>,git rm -f <路径>,删除 .git/modules/<路径> 残留,检查 .gitmodules 是否清理干净后提交。少一步都会留下幽灵配置。

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

如何删除 Git 工作区中未跟踪的文件

删除未跟踪文件用 git clean:先 git clean -nd 预览,确认后 git clean -fd 删除文件和目录,加 -x 连 .gitignore 忽略的文件一起删。删除不可恢复,-n 预览是必备习惯。

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

如何重命名 Git 分支(本地和远程)

重命名分支:git branch -m 新名(本地);远程没有"重命名",需推新名分支 git push -u origin 新名,删旧远程分支 git push origin --delete 旧名,并让协作者更新本地跟踪。

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

如何重命名 Git 标签

Git 没有直接重命名标签的命令,做法是建新删旧:git tag 新名 旧名(复制指向),git tag -d 旧名,git push origin 新名,git push origin --delete 旧名。已发布的 tag 改名需谨慎。

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

如何解决 Git 合并冲突(merge conflict)

解决合并冲突四步:git status 看冲突文件 → 打开文件编辑冲突标记(<<<<<<< 当前分支 / ======= / >>>>>>> 对方分支)→ git add 标记已解决 → git commit 完成合并。工具辅助:git mergetool 或 IDE 内置合并工具。

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

如何回退到之前的某个提交

回退到历史提交:本地未推送用 git reset --hard <提交哈希>(彻底回到该点);已推送用 git revert 逐个反向提交保持历史不改写。只想看看旧代码用 git checkout <哈希>(游离 HEAD)。

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

如何撤销已推送的合并提交(merge commit)

撤销已推送的合并提交:git revert -m 1 <合并提交哈希>,-m 1 指定以主线(通常是 main)为基准做反向操作。注意:之后想把该分支重新合回来,需要先 revert 这个 revert 或重建分支提交。

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

如何撤销多个提交

撤销多个提交两种方式:保留历史用 git revert 逐个反向(git revert A..B 或 --no-commit 批量),已推送分支必须用它;未推送的用 git reset --hard <目标提交> 直接回到过去。

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

如何安全地把分支合并到 main(master)

安全合并的标准流程:更新本地 main → 先把 main 合入功能分支解决冲突 → 跑测试 → 再合并回 main(此时通常快进)→ push。走 PR/MR 流程加评审和 CI 检查更稳。

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

如何按提交信息搜索 Git 提交记录

按提交信息搜索:git log --grep="关键词" 支持正则,-i 忽略大小写,--all 搜全部分支,配合 --author、--since 等过滤。组合 git log --grep -p 可看匹配提交的完整 diff。

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

如何查看某个提交的具体改动

查看提交的改动:git show <提交哈希> 显示完整 diff(信息+内容);只要统计用 --stat,只看文件名用 --name-only,看单行级变化加 --word-diff。