如何临时让Git停止追踪指定文件/目录,PR完成后恢复追踪
解决方案
以下方案均为本地操作,无需修改仓库公共配置、无需管理员权限,可实现临时忽略已追踪文件变更,PR完成后恢复正常追踪的需求。
方案1:使用git update-index标记忽略变更(最推荐)
该方案通过修改本地Git索引标记实现忽略,完全不会影响远程仓库和其他协作者:
- 适用场景:本地保留文件修改,提交PR时不带上这些变更
执行临时忽略命令:
PR处理完成后恢复追踪命令:# 忽略单个文件变更 git update-index --assume-unchanged <文件路径> # 忽略整个目录下所有文件变更 git update-index --assume-unchanged <目录路径>/*# 恢复单个文件追踪 git update-index --no-assume-unchanged <文件路径> # 恢复整个目录追踪 git update-index --no-assume-unchanged <目录路径>/* # 忘记被标记的文件路径时,可执行此命令查看所有被标记忽略的文件 git ls-files -v | grep '^h' - 特殊场景:如果需要优先拉取远程对应文件的更新、避免本地修改和远程更新冲突,可将上述命令中的
--assume-unchanged替换为--skip-worktree,恢复时使用--no-skip-worktree,查看被标记文件的命令为git ls-files -v | grep '^S'。
方案2:临时暂存不需要提交的变更
如果只是提交PR时需要临时隐藏这些变更,后续还要恢复使用,可使用Git暂存功能:
- 临时暂存指定文件的变更:
git stash push -m "临时隐藏非PR相关变更" <文件1路径> <文件2路径> <目录路径> # 若仅少量文件需要提交到PR,可先暂存需要提交的文件,再暂存剩余所有变更 git add <需要提交的文件路径> git stash push -k -m "临时隐藏非PR相关变更"
- 正常提交代码、创建PR,PR处理完成后恢复暂存的变更即可:
git stash pop
方案3:本地长期忽略(无需频繁恢复的场景可选)
如果这些文件你本地需要长期忽略变更,可修改项目目录下的.git/info/exclude文件,按.gitignore的规则添加需要忽略的文件/目录路径即可。该文件仅在本地生效,不会提交到仓库,不会影响其他协作者。
注意事项
不要提交
git rm --cached的执行结果到PR,否则PR合并后会删除远程仓库的对应文件,影响其他协作者。
不要提交修改后的项目根目录.gitignore到PR,否则会覆盖公共忽略规则,影响所有协作者。
内容的提问来源于stack exchange,提问作者SudipM
相关产品推荐
相关产品推荐

