执行git pull时如何跳过本地已存在文件避免合并覆盖报错
解决方案
报错原因
你遇到的报错是因为repo2作为未完成任何提交的空Git仓库,工作区的file1属于未跟踪文件,而上游repo1的master分支存在同名已提交文件,Git默认会阻止可能覆盖本地未跟踪文件的合并操作。
操作步骤
你不需要删除本地已有的file1,按以下步骤操作即可:
- 第一步:将本地已有的
file1加入Git暂存区git add file1 - 第二步:生成本地仓库的初始提交
git commit -m "init: add local file1" - 第三步:执行拉取合并操作
git pull origin master --allow-unrelated-histories
原理说明
你提前拷贝的file1和repo1中提交的file1内容完全一致,Git比对文件哈希后会直接复用本地文件内容,不会重复拉取,也不会产生额外的磁盘占用,和本地克隆时硬链接节省空间的效果一致。如果两边file1内容有差异,你可以把第三步的命令换成git pull origin master --allow-unrelated-histories -X ours,就会强制优先保留本地file1的内容。
内容的提问来源于stack exchange,提问作者Shadi
相关产品推荐
相关产品推荐

