为什么说 Git 分支只是一个指向提交的轻量指针,创建分支时实际写入了什么
为什么说 Git 分支只是一个指向提交的轻量指针,创建分支时实际写入了什么 本文先给出可直接复述的结论,再用最小代码说明Git 分支 指针 原理 refs/heads的工作方式、判断依据、项目边界和常见误区。
程序员面试题库第 37 页,收录第 1801–1850 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
为什么说 Git 分支只是一个指向提交的轻量指针,创建分支时实际写入了什么 本文先给出可直接复述的结论,再用最小代码说明Git 分支 指针 原理 refs/heads的工作方式、判断依据、项目边界和常见误区。
git cherry-pick 适用于什么场景,挑选的提交在新分支上为什么是不同的对象 本文先给出可直接复述的结论,再用最小代码说明git cherry-pick 挑选提交的工作方式、判断依据、项目边界和常见误区。
同一提交被 cherry-pick 到多个分支后,再合并这些分支会发生什么,如何避免重复冲突 本文先给出可直接复述的结论,再用最小代码说明cherry-pick 重复提交 合并 冲突的工作方式、判断依据、项目边界和常见误区。
为什么直接 cherry-pick 一个 merge commit 会失败,-m 1 表示什么、何时应该改用 revert 或重新合并 本文先给出可直接复述的结论,再用最小代码说明git cherry-pick merge commit -m的工作方式、判断依据、项目边界和常见误区。
git cherry-pick 如何一次挑拣一个提交区间,区间左端点开闭有什么讲究、中途冲突如何处理 本文先给出可直接复述的结论,再用最小代码说明git cherry-pick 区间 冲突 处理的工作方式、判断依据、项目边界和常见误区。
git commit --amend 修改了最近一次提交的什么,为什么已推送的提交不应再 amend 本文先给出可直接复述的结论,再用最小代码说明git commit --amend 修改提交 风险的工作方式、判断依据、项目边界和常见误区。
Git 合并冲突标记 <<<<<<< 各段含义是什么,标准的冲突解决与验证流程是怎样的 本文先给出可直接复述的结论,再用最小代码说明Git 合并冲突 解决流程 冲突标记的工作方式、判断依据、项目边界和常见误区。
删除本地分支和远程分支分别用什么命令,分支被删后提交对象会立刻消失吗 本文先给出可直接复述的结论,再用最小代码说明git 删除分支 远程分支 回收的工作方式、判断依据、项目边界和常见误区。
为什么改写历史后推送推荐 git push --force-with-lease 而不是 --force,它检测了什么条件 本文先给出可直接复述的结论,再用最小代码说明git push --force-with-lease 安全的工作方式、判断依据、项目边界和常见误区。
Git 的 blob、tree、commit 三种对象各记录什么内容,它们如何组成一次提交 本文先给出可直接复述的结论,再用最小代码说明Git 对象模型 blob tree commit的工作方式、判断依据、项目边界和常见误区。
.gitignore 中目录通配、取反规则和多级 ignore 文件的匹配优先级是怎样的 本文先给出可直接复述的结论,再用最小代码说明gitignore 语法 通配符 取反 优先级的工作方式、判断依据、项目边界和常见误区。
本文解释 HEAD 的本质,说明 detached HEAD 状态下提交为何会变成悬空提交,以及如何通过 reflog 查找哈希并创建分支来恢复提交。包括机制、具体场景和操作边界。
如何用 git log 的 -S、-G、--follow 等选项追踪某段代码何时被引入、移动或删除 本文先给出可直接复述的结论,再用最小代码说明git log -S -G 查找代码历史的工作方式、判断依据、项目边界和常见误区。
三方合并中的 merge base 是什么,找不到共同祖先时 Git 如何处理 本文先给出可直接复述的结论,再用最小代码说明git merge-base 三方合并 共同祖先的工作方式、判断依据、项目边界和常见误区。
Git 合并时什么条件下发生 fast-forward,与三方合并产生的 merge commit 有何本质区别 本文先给出可直接复述的结论,再用最小代码说明git merge fast-forward 三方合并的工作方式、判断依据、项目边界和常见误区。
Git 的 ort 与旧的 recursive 合并策略有什么区别,什么时候需要指定 -X 选项调整合并行为 本文先给出可直接复述的结论,再用最小代码说明git merge ort recursive 策略 -X的工作方式、判断依据、项目边界和常见误区。
合并冲突时 ours 和 theirs 分别指哪一方,rebase 中为什么会反过来 本文先给出可直接复述的结论,再用最小代码说明git 冲突 ours theirs rebase 方向的工作方式、判断依据、项目边界和常见误区。
Git 的 packfile 和 delta 压缩在什么时候触发,为什么松散对象多的仓库会变慢 本文先给出可直接复述的结论,再用最小代码说明Git packfile delta 压缩 gc的工作方式、判断依据、项目边界和常见误区。
git pull 默认行为是什么,配置 pull.rebase 或 --rebase 后拉取流程有何不同 本文先给出可直接复述的结论,再用最小代码说明git pull rebase 区别 fetch merge的工作方式、判断依据、项目边界和常见误区。
git push 提示 non-fast-forward 被拒绝时说明远程发生了什么,pull --rebase 与 force-with-lease 各适合什么情况 本文先给出可直接复述的结论,再用最小代码说明git push non-fast-forward 拒绝 解决的工作方式、判断依据、项目边界和常见误区。
git rebase -i 中 pick、squash、fixup、reword 各做什么,如何用它们整理提交历史 本文先给出可直接复述的结论,再用最小代码说明git rebase -i squash fixup 整理提交的工作方式、判断依据、项目边界和常见误区。
git rebase 实际做了什么,变基后原提交还在吗、哈希为什么全变了 本文先给出可直接复述的结论,再用最小代码说明git rebase 原理 提交哈希变化的工作方式、判断依据、项目边界和常见误区。
git rebase --onto 能解决什么问题,如何把基于错误分支开发的提交移植到正确基线 本文先给出可直接复述的结论,再用最小代码说明git rebase --onto 移植分支的工作方式、判断依据、项目边界和常见误区。
团队协作中什么时候用 rebase、什么时候用 merge,为什么公共分支禁止变基 本文先给出可直接复述的结论,再用最小代码说明git rebase merge 区别 选择的工作方式、判断依据、项目边界和常见误区。
origin/main 这种远程跟踪分支是什么,为什么本地不能直接在上面提交 本文先给出可直接复述的结论,再用最小代码说明Git 远程跟踪分支 origin/main的工作方式、判断依据、项目边界和常见误区。
git rerere 如何记录并复用冲突解决方案,长期特性分支反复合并时为什么有用 本文先给出可直接复述的结论,再用最小代码说明git rerere 复用冲突解决的工作方式、判断依据、项目边界和常见误区。
git reset 的 --soft、--mixed、--hard 三种模式分别移动了哪几棵树,各自适合什么撤销场景 本文先给出可直接复述的结论,再用最小代码说明git reset soft mixed hard 区别的工作方式、判断依据、项目边界和常见误区。
工作区和暂存区的未提交修改分别如何丢弃,git restore 的 --staged 与 --worktree 如何组合 本文先给出可直接复述的结论,再用最小代码说明git restore 丢弃修改 --staged的工作方式、判断依据、项目边界和常见误区。
git revert 一个 merge commit 为什么要加 -m 参数,之后想把该分支再合回来会遇到什么问题 本文先给出可直接复述的结论,再用最小代码说明git revert merge commit -m 主线的工作方式、判断依据、项目边界和常见误区。
Git 用快照而非差异存储版本,这对切换分支和查看历史有什么实际影响 本文先给出可直接复述的结论,再用最小代码说明Git 快照 差异 存储模型的工作方式、判断依据、项目边界和常见误区。
如何只暂存一个文件中的部分修改,git add -p 的交互选项各自做什么 本文先给出可直接复述的结论,再用最小代码说明git add -p 部分暂存 hunk的工作方式、判断依据、项目边界和常见误区。
git stash 保存的是什么,如何只暂存部分文件、应用后保留暂存区状态或恢复时被删除的 stash 本文先给出可直接复述的结论,再用最小代码说明git stash 用法 pop apply 找回的工作方式、判断依据、项目边界和常见误区。
Git 的工作区、暂存区和仓库三个状态分别存放什么,文件如何在三者之间流转 本文先给出可直接复述的结论,再用最小代码说明Git 工作区 暂存区 仓库 三棵树的工作方式、判断依据、项目边界和常见误区。
为什么特性分支应该保持短小,长期不合并的分支会带来哪些具体的合并与维护问题 本文先给出可直接复述的结论,再用最小代码说明Git 特性分支 生命周期 长期分支的工作方式、判断依据、项目边界和常见误区。
git push 时设置 -u / --set-upstream 建立了什么关系,之后 pull 和 status 行为有什么变化 本文先给出可直接复述的结论,再用最小代码说明git push -u upstream 跟踪分支的工作方式、判断依据、项目边界和常见误区。
为什么需要 Git 这样的分布式版本控制系统,它解决了本地备份和集中式 VCS 的哪些具体问题 本文先给出可直接复述的结论,再用最小代码说明Git 分布式版本控制 优势的工作方式、判断依据、项目边界和常见误区。
Git Flow 与 trunk-based development 的分支模型有何差异,团队选型时应考虑哪些发布与协作因素 本文先给出可直接复述的结论,再用最小代码说明Git Flow 主干开发 分支模型 选择的工作方式、判断依据、项目边界和常见误区。
git worktree 解决了什么痛点,同一仓库检出多个分支到不同目录时有哪些限制 本文先给出可直接复述的结论,再用最小代码说明git worktree 多工作区 并行开发的工作方式、判断依据、项目边界和常见误区。
Go 的 sync/atomic 操作和互斥锁在保护简单计数器时怎么选,原子操作能保证什么? 本文先给出可直接复述的结论,再用最小代码说明Go atomic 原子操作 mutex 选择的工作方式、判断依据、项目边界和常见误区。
Go 的带缓冲 channel 缓冲满了和空了分别会怎样,缓冲大小如何影响并发行为? 本文先给出可直接复述的结论,再用最小代码说明Go 缓冲 channel 满 空 阻塞的工作方式、判断依据、项目边界和常见误区。
Go 中函数参数把 channel 声明为只读或只写有什么作用? 本文先给出可直接复述的结论,再用最小代码说明Go channel 方向 只读 只写 chan<-的工作方式、判断依据、项目边界和常见误区。
Go 中关闭 channel 的正确姿势是什么,哪些操作会 panic? 本文先给出可直接复述的结论,再用最小代码说明Go close channel panic 向已关闭发送的工作方式、判断依据、项目边界和常见误区。
Go 的 context.WithCancel 和 WithTimeout 的取消信号如何在调用链中传播? 本文先给出可直接复述的结论,再用最小代码说明Go context WithCancel WithTimeout 取消传播的工作方式、判断依据、项目边界和常见误区。
为什么 Go 官方建议不要把 context 存进结构体字段,而要做函数第一个参数? 本文先给出可直接复述的结论,再用最小代码说明Go context 结构体字段 第一个参数的工作方式、判断依据、项目边界和常见误区。
Go 中用 defer 关闭文件、连接等资源时,多个 defer 的执行顺序和错误处理要注意什么? 本文先给出可直接复述的结论,再用最小代码说明Go defer 关闭资源 顺序 错误的工作方式、判断依据、项目边界和常见误区。
Go 的 defer 参数何时求值,defer 在循环里累积会有什么问题? 本文先给出可直接复述的结论,再用最小代码说明Go defer 参数求值 循环 资源释放的工作方式、判断依据、项目边界和常见误区。
Go 的空接口 interface{}(any)能存任何值,滥用它有什么代价? 本文先给出可直接复述的结论,再用最小代码说明Go any 空接口 滥用 类型安全的工作方式、判断依据、项目边界和常见误区。
Go 中什么时候返回 error、什么时候 panic,recover 应该用在哪里? 本文先给出可直接复述的结论,再用最小代码说明Go error panic recover 区别的工作方式、判断依据、项目边界和常见误区。
Go 的 fmt.Errorf %w 包装错误和 errors.Unwrap、Is、As 如何配合工作? 本文先给出可直接复述的结论,再用最小代码说明Go error wrap %w errors.Is errors.As的工作方式、判断依据、项目边界和常见误区。
Go 中 runtime.Goexit 和 return 结束 goroutine 有什么区别? 本文先给出可直接复述的结论,再用最小代码说明Go runtime.Goexit return defer的工作方式、判断依据、项目边界和常见误区。