切换到master分支后Visual Studio引发Git合并错误求助
解决Visual Studio项目Git合并冲突的问题(附正确工作流)
问题根源
你遇到的所有冲突文件(.vs/下的.suo、obj/下的构建缓存文件)都是Visual Studio自动生成的临时/构建文件,这些文件完全不需要被Git追踪——它们会随环境、构建操作自动变化,追踪必然导致无意义的冲突。
先解决当前的合并失败问题
按以下步骤操作:
- 取消正在进行的失败合并:
git merge --abort - 回退master分支上那个"useless commit"(这个提交包含了不该追踪的临时文件):
git reset HEAD~1 - 创建并配置
.gitignore文件,彻底排除这些无用文件:- 在项目根目录新建
.gitignore文件,写入以下内容:# Visual Studio IDE 相关文件 .vs/ *.suo *.user *.sln.docstates # 构建输出与缓存文件 obj/ bin/ *.GeneratedMSBuildEditorConfig.editorconfig *.assets.cache *.csproj.nuget.dgspec.json *.csproj.nuget.g.props project.assets.json project.nuget.cache - 把已经被Git错误追踪的这些文件从仓库中移除(本地文件会保留,只是Git不再监控它们):
git rm -r --cached .vs/ obj/ - 提交这个配置:
git add .gitignore git commit -m "添加.gitignore,排除IDE和构建临时文件"
- 在项目根目录新建
- 现在可以正常合并功能分支了:
git merge class-lib-move
针对Visual Studio项目的正确Git工作流
避免以后再踩坑,按这个流程来:
- 克隆仓库后第一时间检查是否有
.gitignore,没有就立刻创建并配置好上面的规则 - 创建功能分支开发:
git checkout -b class-lib-move - 用Visual Studio打开项目开发,完成修改后:
- 先关闭Visual Studio(防止它自动生成/修改临时文件)
- 提交你的源码修改:
git add . # 因为有.gitignore,只会选中你修改的源码文件 git commit -m "完成类库迁移:[具体修改描述]"
- 切回master分支并合并:
git checkout master git merge class-lib-move - 推送到远程仓库:
git push origin master
内容的提问来源于stack exchange,提问作者artem keller
相关产品推荐
相关产品推荐

