如何避免复刻仓库中的README被合并至上游仓库?
优雅隔离复刻仓库专属文件的方案
方法1:用.gitattributes配置自动排除
在复刻仓库根目录创建.gitattributes文件,添加以下内容:
README.md export-ignore
这个配置会让Git在生成补丁、提交PR时自动忽略指定文件。你本地仍可正常修改README,但这些修改不会出现在给上游的PR提交记录里,从根源避免了PR中包含专属文件的问题。
注意:同步上游代码时,若上游更新了README,你本地的修改仍可能触发冲突,但只要你不把自己的README修改推回上游,后续冲突概率会极低,即便出现也只需手动解决一次。
方法2:用独立分支隔离自定义内容
- 给复刻仓库新建一个专属分支(比如命名为
custom-features),在这个分支里修改你的专属README和其他自定义功能。 - 将复刻仓库的默认分支设为这个专属分支,确保访客打开仓库时看到的是你的专属内容。
- 给上游提PR时,从与上游同步的
main分支切出特性分支,开发完成后直接推送到上游PR,全程不涉及专属分支的内容。 - 同步上游代码时,先更新
main分支,再将main合并到专属分支,此时冲突只会局限在自定义文件范围内,处理成本极低。
这种方式完全隔离上游贡献和自定义内容,适合除了README还有大量专属功能的场景。
方法3:利用GitHub展示特性(仅针对README)
你提到的在.github目录下放置README.md的方案,是GitHub官方支持的特性:平台会优先展示.github目录下的README,而非根目录文件。
- 保留上游根目录的README不修改,避免冲突。
- 在
.github/README.md中编写复刻专属说明,访客打开你的仓库时会直接看到这份内容。 - 给上游提PR时,因为未改动根目录README,自然不会涉及该文件的提交或冲突问题。
这个方法零配置,仅靠平台特性实现,最适合仅需自定义README的场景。
内容的提问来源于stack exchange,提问作者rwfbc
相关产品推荐
相关产品推荐

