
.gitignore 不生效的排查方法
.gitignore 不生效最常见原因:文件已被 Git 跟踪(需 git rm --cached 移出索引)。其他原因:规则语法错误、文件路径层级不对、前面有 ! 取反规则覆盖。用 git check-ignore -v <文件> 定位匹配的规则行。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

.gitignore 不生效最常见原因:文件已被 Git 跟踪(需 git rm --cached 移出索引)。其他原因:规则语法错误、文件路径层级不对、前面有 ! 取反规则覆盖。用 git check-ignore -v <文件> 定位匹配的规则行。

Android Studio 项目的 .gitignore 核心项:.gradle/、build/、local.properties、.idea/(或按需保留部分)、.iml、.keystore 签名文件、.apk/aab 产物、.cxx/、captures/。直接套用 GitHub 官方 Android 模板最稳妥。

Visual Studio 项目的 .gitignore 核心项:[Bb]in/、[Oo]bj/、.vs/、.user、.suo、Debug/Release 构建输出、packages/(老格式)、.pdb、TestResults/。推荐直接使用 GitHub 官方 VisualStudio 模板。

为单个提交生成补丁:git format-patch -1 <提交哈希>,生成 0001-说明.patch 文件;对方用 git am < 补丁文件 应用为完整提交(保留作者与提交信息)。只要 diff 用 git show > fix.patch。

按最近提交排序列出分支:git for-each-ref --sort=-committerdate refs/heads/ --format 自定义输出;远程分支换 refs/remotes/。简版用 git branch --sort=-committerdate。适合清理久未更新的陈旧分支。

交互式 rebase 合并提交:git rebase -i HEAD~N 打开编辑列表,把要并入前一个提交的那行的 pick 改为 squash(或 s),保存后编辑合并后的提交信息即可。fixup 则丢弃该提交的信息。

查看文件旧版本:git log -- <文件> 找到提交,git show <提交>:<路径> 直接输出内容;保存到本地用 git show <提交>:<路径> > 旧版本.txt;恢复用 git restore --source=<提交> <文件>。

从别的分支拿单个文件:git checkout <源分支> -- <文件路径>(Git 2.23+ 用 git restore --source=<源分支> <路径>),文件会以该分支的版本覆盖工作区并加入暂存区,提交即可。

删除被 Git 跟踪的文件用 git rm <文件>(删除+暂存一步完成),再 git commit。只想停止跟踪但保留本地文件用 git rm --cached。已从历史中彻底清除(如密码)需 git filter-repo 重写历史。

获取当前分支名:git branch --show-current(Git 2.22+,最简洁);兼容性更好的是 git rev-parse --abbrev-ref HEAD。脚本中推荐使用这两个,不要解析 git branch 的输出。

说明 Git 单仓库 sslVerify 的作用域、临时关闭后的恢复方法,以及用可信 CA 修复 HTTPS 证书问题的优先方案。

中止合并用 git merge --abort,仓库回到合并前的状态,冲突标记与暂存全部丢弃。rebase 对应的命令是 git rebase --abort。中止后可换个思路(换策略/分批合)再来。