#Git
共 41 篇文章
Actions 已 push 提交,另一个 on: push 工作流却没启动
远端收到提交不代表下游工作流会启动。检查实际推送身份、分支路径过滤和GITHUB_TOKEN事件规则,再选择同流程job或授权认证方案。
git --force-with-lease 推送成功,却覆盖了远端新增提交
lease省略预期值时会依赖可变远程跟踪引用,fetch后推送通过不代表新增提交已经整合。审查并保留旧历史,授权改写时固定已审核完整OID。
Git 拉取代码报 refusing to merge unrelated histories
本地和远程分别初始化后,git pull 可能报 refusing to merge unrelated histories。先核对远程、浅克隆和本地修改,再在新分支上合并、检查冲突并保留两边提交。
Git 标签无法验签
pnpm 历史标签报 cannot verify a non-tag object。区分轻量标签、附注标签与提交签名,保留发布版本绑定和可信签名的验证要求。
Git rebase 提示 skipped previously applied,提交哈希明明不同
rebase可以按补丁等价跳过哈希不同的提交。对比实际变更,区分reapply-cherry-picks、empty与keep-empty,保留改写前引用和未提交文件。
git lfs migrate --no-rewrite 报 unable to find entry,文件却在子目录
LFS无历史重写迁移要求已跟踪文件的完整字面路径。核对属性与当前分支,按选定路径生成新提交,不把历史重写、全目录暂存或跳过确认当成路径修复。
Git revert 合并提交报 is a merge but no -m option was given
Git 撤销合并提交时,-m 指定主线父提交编号。先核对 parent 顺序与两侧差异,再创建撤销提交,并处理冲突、回退及后续再次合并的影响。
Git 拉取报 untracked 会被覆盖:上游只改了路径大小写
大小写不敏感的工作树可能在大小写改名后阻止更新;核对索引与上游路径,保留本地工作后选择新 checkout 或修正冲突命名。
Git HTTPS 串用了另一账号的凭据,按仓库路径区分认证
HTTPS helper默认可能共用同一主机的凭据。给需要独立身份的仓库开启useHttpPath,并检查安全存储、重新认证和同URL多账号边界。
.gitignore 写了 !.keep,子目录中的文件仍被忽略
.gitignore 的文件例外无法穿过已被忽略的父目录。用 check-ignore 定位规则,先放行目录再保留 .keep,并通过添加预览确认例外范围。
Git 已设置 safe.directory,后续命令仍报 dubious ownership
checkout 成功,后续 Git 命令仍报 dubious ownership 时,在失败步骤中核对用户、HOME、仓库路径和配置来源,只为确认可信的目录添加例外。
Git fetch 后仍看不到其他远程分支
单分支克隆后,git fetch --all 仍可能只更新原分支。确认远端目标分支存在,检查 remote.origin.fetch,并按需追加一个分支或恢复全部普通分支的抓取范围。
ssh 测试成功,git push 却 Permission denied:检查主机与密钥配置
用网友 ssh -T 成功但推送失败的案例,比较 github.com 与 ssh.github.com、remote URL、Git SSH 覆盖设置和实际提供的密钥。
Gerrit 下载 commit-msg 报 subsystem request failed on channel 0
OpenSSH 9.0 起 scp 默认使用 SFTP,Gerrit 的 SCP hook 下载端点可能拒绝子系统请求。确认失败阶段后限定使用 -O,或改用实例公布的 HTTPS 下载入口。
git checkout -- * 因未跟踪文件报 pathspec 错误
git checkout -- * 报未跟踪文件的 pathspec 错误时,先核对 shell 展开和索引状态,再用明确路径恢复。说明暂存区与 HEAD 的区别及覆盖前的备份要求。
Git 克隆后目录为空,提示 remote HEAD refers to nonexistent ref
Git 对象已下载却没有检出文件时,核对远端 HEAD 与实际分支。恢复本地跟踪分支,并区分指定分支克隆、本地 origin/HEAD 和服务端默认分支修复。
Git 初始提交执行 reset 时报 HEAD~1 无法识别
第一次提交没有父提交,git reset --soft HEAD~1 因而无法解析目标。区分真实根提交和浅克隆,并通过新建分支、重命名或 amend 完成修改,保留恢复入口。
Git 解决 cherry-pick 冲突后,提交报 cannot amend
Git 冲突解决并暂存后,cherry-pick 仍可能尚未结束。需要独立提交时使用 --continue;确实要并入未共享的旧提交时,先确认 HEAD、保存工作,再区分 --quit 与 --abort 的影响。
Git 新建分支时执行 switch 报 invalid reference
新分支名在本地和远程跟踪引用中都不存在时,git switch 分支名可能报 invalid reference。用小写 -c 创建,明确起点,并区分远程分支自动猜测与强制创建 -C 的行为。


