Git如何忽略特定已忽略文件的远程变更?Latex项目PDF冲突
问题描述
我们的LaTeX项目Git仓库已配置忽略PDF文件,但仍有成员推送编译后的PDF文件,导致拉取代码时本地与远程的PDF文件产生冲突,提示:
Your local changes to the following files would be overwritten by merge
请问是否存在Git功能可以实现始终忽略该文件的远程变更,且最好能与.gitignore列表同步?
可选解决方案
- 团队内部约定所有人不推送
.gitignore列表中的文件,并回退已推送的相关变更 - 配置Git别名,执行命令忽略本地PDF文件后拉取:
rm that-file.pdf && git pull - 先备份本地PDF文件,再覆盖拉取远程变更
- 调整LaTeX项目配置,将编译产物输出到独立的
build文件夹中
其他方案分析(不推荐/不适用)
- 推送PDF文件的删除操作虽能解决冲突,但不想引发远程仓库的变更
- 执行
git fetch --all && git reset --hard origin/master强制拉取会丢失其他未提交的本地变更 - 使用
git update-index --assume-unchanged无法处理远程PDF文件的常规更新 - 部分类似需求是跳过所有冲突的远程更新,但此处仅需忽略
.gitignore列表中文件的冲突
Git钩子相关补充
- Git不存在
pre-pull钩子,无法在拉取前执行自定义操作 - 服务器端钩子可用于拒绝包含
.gitignore文件的提交,或自动重命名PDF文件 - 客户端配置
pre-commit钩子,可在提交前检查并阻止违反.gitignore规则的文件被提交
内容的提问来源于stack exchange,提问作者restart4tw
相关产品推荐
相关产品推荐

