Git已推送的追踪文件如何忽略所有协作者本地内容变更
团队级忽略已追踪文件变更的实现方案
你现在用的git update-index --assume-unchanged是仅对执行命令的本地仓库生效的本地配置,不会随仓库提交同步给其他协作者,没法满足全团队统一生效的需求,按以下步骤操作即可:
- 第一步:把
users.csv从Git追踪索引中移除,全程保留本地实体文件,执行命令:
git rm --cached users.csv
注意:加了
--cached参数后,该命令只会清除Git对这个文件的追踪记录,不会删除你本地工作区里实际存的users.csv。其他协作者后续拉取变更时,Git也不会强制删除他们本地已有的users.csv,如果本地该文件有未提交的修改,Git还会弹出冲突提醒,不会造成文件丢失。
- 第二步:打开项目根目录的
.gitignore文件,新增一行忽略规则:
users.csv
- 第三步:把上述两项变更(移除文件追踪的记录、
.gitignore规则更新)提交后推送到远程仓库,所有协作者拉取最新代码后,本地的users.csv就会自动被Git忽略,后续运行测试套件产生的文件变更不会再显示为已修改状态,文件本身也会正常保留在本地。
如果需要给所有协作者提供users.csv的初始参考模板,可以把仓库里留存的初始版users.csv重命名为users.csv.example一并提交,在项目说明里备注:首次拉取代码后,把users.csv.example复制一份重命名为users.csv即可正常跑测试,不用手动额外配置忽略规则。
补充:别用--assume-unchanged做团队级规则,这个标记本来是设计用来提升慢文件系统下大文件的检索性能的,本身就不支持跨成员同步,本地临时忽略变更用没问题,团队统一规则还是要用.gitignore配合移除追踪索引的标准方案。
内容的提问来源于stack exchange,提问作者prajeesh
相关产品推荐
相关产品推荐

