git bisect 卡在 skipped commit 上
git bisect 反复 skip,最后只给出「The first bad commit could be any of...」一堆 SHA 而不是唯一结果。本文教你整段 skip、用退出码 125 自动跳过,并修掉构建/环境问题让 bisect 真正收敛。
带有该标签的文章
git bisect 反复 skip,最后只给出「The first bad commit could be any of...」一堆 SHA 而不是唯一结果。本文教你整段 skip、用退出码 125 自动跳过,并修掉构建/环境问题让 bisect 真正收敛。
PR 有 approve、CI 全绿、没有冲突,但 GitHub、GitLab、Bitbucket 的合并按钮还是灰的。找出到底是哪条规则没满足,在不削弱保护的前提下解开。
解决 cherry-pick 冲突后执行 --continue,Git 提示 commit 已为空。讲清楚何时该用 --skip、何时用 --allow-empty,以及为什么 --empty=drop 在这里没用。
git pull / push 每次都弹密码、卡住 30 秒、或直接报 403 / 401,是因为凭证 helper 缓存了失效凭证或配置出错。清掉缓存凭证、重新认证即可。GitHub / GitLab / Bitbucket 通用。
在 detached HEAD 上提交,切回分支后 commit 不见了?从 reflog 找到 SHA,在 git gc 清理掉它之前挂回分支。
git push --force 把共享分支上队友刚推的提交冲掉了。教你从 reflog 或 GitHub Activity 视图找回丢失的 commit,并彻底防止再次发生。
新成员 clone 仓库后 pre-commit、pre-push hooks 完全不触发。原因是 git clone 从不复制 .git/hooks/——本文给出一行 core.hooksPath 修复,以及正确的 husky v9 / lefthook 配置方式。
历史中有超过 100 MiB 的文件,GitHub 拒绝 push。用 git-filter-repo 把它从每个 commit 里彻底清除,再 force push 干净推上去。
clone 后图片、模型等大文件变成几行 LFS pointer 文本,程序报「无效文件格式」。先 git lfs install 再 git lfs pull 两条命令解决,并附上 smudge filter 为什么没跑的排查表。
一次换行符规范化把 2 行改动变成几千行 CRLF/LF diff。先判断自己属于哪一类,再修好 .gitattributes、renormalize 一次,并彻底防止复发。
Git 把二进制文件标记为冲突,却没有 diff 标记。用 git checkout --ours/--theirs 选对版本、完成合并,本文给出完整诊断与修复路径。
blobless 的 monorepo clone 在 pull 之后出现空文件、旧版本或文件缺失。用 git backfill 批量补全 blob、重设 sparse cone,并彻底防止复发。
git pull --rebase 在一个看不懂的冲突上停下,解完后 git log 全乱了:SHA 变了、commit 顺序变了、还多出一个 fix conflict 提交。哪些是正常的、哪些是真坏了、怎么干净恢复。
执行 git rebase 后部分提交从历史中消失。用 ORIG_HEAD 或 reflog 在两分钟内找回丢失的 commit,零数据损失。
git revert 撤销 merge commit 报错 'commit is a merge but no -m option was given'。讲清 -m 1 和 -m 2 该选哪个、如何撤销正确的一侧,以及之后重新合并时不丢改动的完整方法。
API key 或密码被推进了公开 GitHub 仓库。先吊销密钥,再用 git-filter-repo 从历史里彻底清除,赶在爬虫使用它之前。
切换分支后 git stash list 变空,未完成的改动找不到了。本文教你用 stash reflog 或 git fsck 找回丢失的 stash 并恢复到工作区。
git submodule update 执行成功,submodule 却停留在旧 commit、目录为空,或指向一个根本不存在的 SHA。本文帮你先判断属于六种原因中的哪一种,再对症同步指针。
release tag 打到了错误的 commit 上,而且已经 push 出去了。本文教你安全地移动 tag、让每个克隆都 force-fetch,并处理 npm、GitHub Release 等已经锁定旧代码的缓存。
分支或目录被删除后 git worktree 损坏,git worktree list 报错。用 prune 清理悬空注册、用 repair 修复被移动的 worktree、抢救未提交改动——基于 Git 2.36+ 实测命令。