# 1. git merge 与 git rebase 的选择决策中团队协作分支与个人特性分支分别适用哪种?黄金法则是什么? A 共享分支用 merge,个人特性分支可用 rebase,黄金法则是不 rebase 已共享分支 ✓ 正确答案 B 所有分支都应 rebase C merge 会重写历史 D rebase 不改变提交 SHA
# 2. Interactive Rebase 工作流中如何用 `git rebase -i` 进行 squash、reword、reorder、split 操作整理提交历史?autosquash 与 fixup 的配合使用? A interactive rebase 只能删除提交 B autosquash 无法配合 fixup C 用 squash/reword/reorder/split 等操作整理,autosquash 自动归位 fixup!/squash! 提交 ✓ 正确答案 D split 不需要 edit 操作
# 3. git bisect 定位回归缺陷的完整流程中如何设定 good/bad 边界、自动化 bisect run 脚本、处理不可构建的中间提交(skip)? A bisect 只能手工逐个测试 B bisect skip 会终止定位 C 设定 good/bad 边界后用二分定位,可用 bisect run 自动化、bisect skip 跳过不可构建提交 ✓ 正确答案 D bisect 无法处理不可构建提交
# 4. git reflog 的「时间旅行」恢复中误删分支、错误 reset --hard、rebase 中断后如何用 reflog 找回提交并重建分支,恢复的边界是什么? A 可用 reflog 找回误删分支、错误 reset、rebase 中断的提交,前提是提交未被 GC ✓ 正确答案 B reflog 只能恢复 reset C 提交被 GC 后 reflog 仍能恢复 D reflog 无法重建分支
# 5. git cherry-pick 与 git revert 的典型使用场景中热修复回合入主干与撤销已发布提交? A revert 会重写历史 B cherry-pick 撤销已发布提交 C cherry-pick 复制提交改动,revert 生成反向提交撤销已发布提交 ✓ 正确答案 D 两者功能相同
# 6. 误提交敏感信息(密钥)后的正确处置流程中为什么仅 revert 不够,需要 filter-repo + 轮换密钥? A revert 即可彻底删除密钥 B filter-repo 无需配合密钥轮换 C 仅 revert 不够,因为密钥仍在历史中,必须先轮换密钥再用 filter-repo 清理 ✓ 正确答案 D 误提交密钥没有风险
# 7. cherry-pick vs rebase 的选择中何时用 cherry-pick 精确摘取单个提交?cherry-pick 导致的重复提交和冲突如何处理? A 精确摘取单个提交用 cherry-pick,整体平移分支用 rebase,cherry-pick 可能产生重复提交 ✓ 正确答案 B rebase 用于摘取单个提交 C cherry-pick 不会产生重复提交 D cherry-pick 用于整体平移
# 8. git worktree 并行开发中如何在不 clone 的情况下同时检出多个分支进行开发/测试/hotfix?worktree 的生命周期管理和常见陷阱? A worktree 无需清理 B worktree 需要额外 clone 仓库 C 同一分支可被多个 worktree 同时检出 D 可在同一仓库下为多个分支创建独立工作区并行开发,需用 add/remove/prune 管理生命周期 ✓ 正确答案
# 9. .gitignore 的边界中已跟踪文件(tracked file)为何不受 .gitignore 影响,如何强制忽略与恢复跟踪? A .gitignore 对所有文件生效 B 已跟踪文件不受影响的说法错误 C .gitignore 只对未跟踪文件生效,已跟踪文件需先 git rm --cached 再忽略 ✓ 正确答案 D 无法强制忽略已跟踪文件
# 10. Git 的工作区、暂存区与版本库(working tree / index / object store)三层模型中 git add / reset 在各层之间的移动语义? A reset 只影响工作区 B add 把内容写入版本库 C add 把工作区写入暂存区,reset --hard 同时重置 HEAD、暂存区与工作区 ✓ 正确答案 D reset --soft 会丢弃工作区改动
# 11. git log --graph 与分支可视化中--graph、--oneline、--all 组合如何快速理解仓库拓扑与合并历史? A --graph 只显示一条直线 B --all 只显示当前分支 C --oneline 显示完整 diff D 组合可图形化展示分支分叉与合并历史,快速理解仓库拓扑 ✓ 正确答案
# 12. git submodule 与 git subtree 的取舍中外部依赖锁定、更新流程与团队协作的差异? A subtree 需要额外 init 命令 B submodule clone 即完整 C submodule 用指针锁定子仓库版本,subtree 把子仓库历史并入主仓库 ✓ 正确答案 D 两者机制完全相同
# 13. 大规模仓库的 Git 性能方案中浅克隆(shallow clone)、部分克隆(partial clone)、稀疏检出(sparse checkout)在 monorepo 中的适用边界与团队协作影响? A 三者都对历史无影响 B 稀疏检出增加仓库体积 C 浅克隆保留完整历史 D 浅克隆减少历史体积、部分克隆延迟下载 blob、稀疏检出减少工作区,可组合使用 ✓ 正确答案
# 14. git stash、reflog、bisect 三个"救急"命令的典型场景? A stash 用于定位回归 B stash 临时保存未提交改动,reflog 恢复误操作,bisect 二分定位回归 ✓ 正确答案 C reflog 用于临时保存改动 D bisect 用于恢复误删分支
# 15. Git 提交签名(GPG/SSH)的配置与验证中如何配置 commit signing?GitHub/GitLab 的 verified badge 机制?SSH signing 相比 GPG 的便利性? A verified badge 与签名无关 B SSH signing 需要额外生成 GPG 密钥 C 签名只影响提交消息 D 配置签名 key 后提交自动签名,GitHub/GitLab 显示 verified badge,SSH signing 复用现有 SSH 密钥更简便 ✓ 正确答案
# 16. git config 的 core.autocrlf / core.eol 与 .gitattributes 的协同中跨平台换行符(CRLF/LF)规范化的优先级? A .gitattributes 的 text/eol 规则优先级高于本地 core.autocrlf/core.eol,保证跨平台一致 ✓ 正确答案 B 本地 config 优先级高于 .gitattributes C .gitattributes 无法控制换行符 D 换行符与跨平台协作无关
# 17. GitLab CI 的 extends/include 复用机制,与 Git 分支/标签规则结合定义多环境流水线? A extends 用于合并外部文件 B include 合并外部配置,extends 继承 job 配置,二者结合 rules 可按分支/tag 定义多环境流水线 ✓ 正确答案 C include 用于 job 继承 D rules 无法按分支分流