Visual Studio中Git拉取遇729冲突且合并中断,求解决方案
解决Git仓库中bin/obj文件夹引发的冲突及永久排除方案
兄弟,这种情况我太熟了——编译产物混进远程仓库,简直是团队协作的噩梦。先别慌,咱们一步步把问题彻底解决:
第一步:终止当前失败的合并,恢复本地干净状态
现在你的合并已经中断,先把本地状态拉回正轨:
- 如果本地有未提交的修改,先暂存起来避免丢失:
git stash - 执行命令取消合并:
git merge --abort
这会让你的仓库回到拉取前的状态,不会留下半吊子的冲突文件。
第二步:彻底从远程仓库移除bin/obj文件夹
因为这两个文件夹已经被推送到远程,.gitignore对已追踪的文件无效,必须先把它们从仓库的追踪列表里移除:
- 执行命令,移除Git对bin/obj的追踪,但保留本地的文件夹(毕竟本地编译还需要):
git rm -r --cached bin/ obj/ - 提交这个移除操作:
git commit -m "停止追踪bin/obj编译产物文件夹" - 推送到远程仓库:
git push origin <你的分支名>(比如main或develop)
第三步:修复.gitignore,确保以后不再出现问题
现在要让.gitignore真正生效,打开文件添加以下两行(如果是项目根目录下的文件夹,直接这么写就行):
bin/ obj/
- 注意检查VS是否自动生成过.gitignore,有没有覆盖或者路径错误的情况。
- 别忘了把更新后的.gitignore提交并推送到远程,让团队所有人同步这个配置。
第四步:通知团队成员同步操作
让另外两位同事也执行以下步骤,确保他们的本地仓库也同步规则:
- 暂存本地未提交修改:
git stash - 拉取远程最新代码:
git pull origin <分支名> - 如果他们本地的bin/obj还在被追踪,执行:
git rm -r --cached bin/ obj/ - 恢复暂存的修改:
git stash pop - 确认他们的.gitignore里已经添加了bin/和obj/的排除规则
为什么之前的.gitignore没生效?
简单说:.gitignore只对从未被Git追踪过的文件起作用。一旦这些文件夹被git add并提交过,Git就会一直追踪它们,不管.gitignore里怎么写。所以必须先通过git rm --cached移除追踪,才能让规则生效。
内容的提问来源于stack exchange,提问作者Arti
相关产品推荐
相关产品推荐

