Git大法 高频追问 Q&A
A: 协作分支优先 merge 保留历史;个人分支整理可用 rebase。(深入阅读:合并与变基、merge 与 rebase 选型)
约 2 分钟
Git大法 高频追问 Q&A
1. Q: merge 和 rebase 怎么选?
A: 协作分支优先 merge 保留历史;个人分支整理可用 rebase。(深入阅读:合并与变基、merge 与 rebase 选型)
2. Q: revert 和 reset 区别?
A: revert 追加反向提交更安全;reset 改写历史,慎用于共享分支。(深入阅读:reset、restore、revert 与 reflog)
3. Q: 冲突处理流程?
A: 解决冲突 -> git add -> git rebase --continue 或 git commit。(深入阅读:冲突的三个版本与解决策略)
4. Q: 误删提交如何找回?
A: 先看 git reflog 找到历史指针再恢复。(深入阅读:reset、restore、revert 与 reflog)
5. Q: 常见提交规范?
A: 使用语义化提交(如 feat/fix/docs)提升可读性。(深入阅读:日常提交)
6. Q: 如何定位是哪次提交引入了线上回归?
A: 先找一个可复现的测试命令和已知 good/bad 提交,再用 git bisect 二分验证;测试脚本返回值必须能区分通过、失败和环境错误,完成后执行 git bisect reset。(深入阅读:自动化 Bisect)
7. Q: 如何删除一个已经提交的 commit?
A: 未共享历史可用交互式 rebase 的 drop;公共历史用 git revert 追加反向提交。不要为了“历史干净”直接重写他人已经使用的分支。(深入阅读:定位回归与移除提交)
8. Q: 为什么不能直接修改 node_modules?
A: 安装和 CI 重建会覆盖修改。应优先升级依赖;必须临时修复时提交可审计的 patch(如 patch-package 或包管理器 patch),并在依赖升级后删除它。(深入阅读:第三方 npm 包的可追溯修补)