欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【解决方案 七】---Git Merge时“交换文件.MERGE_MSG.swp已经存在”的问题

程序员文章站 2024-03-17 20:52:10
...

这篇博文是因为最近在使用git merge合并其他小伙伴的分支的时候爆出了这个问题,Swap file .MERGE_MSG.swp already exists有点儿看不懂,于是从网上搜了下,从一个妹子那里搞来了解决方案

妹子原文出处: https://blog.csdn.net/qq_32452623/article/details/78395832#comments

问题展示

合并后,执行 git pull 或者 push 或者 merge 命令操作的时候,都会出现了以下错误提示页面,表示懵到天际
【解决方案 七】---Git Merge时“交换文件.MERGE_MSG.swp已经存在”的问题

问题解读

问题原因:

问题出现的原因很好发现,当打开 git/MERGE_MSG 文件的时候,发现有 git/MERGE_MSG.swp 文件的存在,并且从时间上来看, MERGE_MSG 比 MERGE_MSG.swp 要更新。造成这种情况的原因有以下两种可能

  1. 另外一个应用正在打开此文件。这种情况,要小心修改,防止出现同一个文件,两种修改版本的出现。完了之后可以选择退出或者更加小心的继续 。
  2. 编辑该文件的时候,该文件不正常关闭了。这种情况,如果需要,可以选择 “:recover” or “vim -r project-path/.git/MERGE_MSG” 命令来恢复文件关闭前的修改。
    上述两种情况确认完毕后,删除 MERGE_MSG.swp 文件,就可以避免该错误提示。

关于 MERGE_MSG.swp 文件的说明:

.swp 文件和 git 无关,在使用 VIM 开始编辑某文件时,都会产生该文件对应的 .swp 文件:

  • 正常的退出,VIM 会自动删除此类型文件,
  • 非正常退出情况下, VIM 不会删除 ,.swp 文件会作为文件编辑状态的内容备份。

其实多次打开多次不正常关闭,会一直产生 .sw* 文件
【解决方案 七】---Git Merge时“交换文件.MERGE_MSG.swp已经存在”的问题

问题解决

第一步:回到合并前状态

 git merge -abort  // 中止合并
 rm .git/.MERGE_MSG.sw* //删除 vim 非正常关闭产生的文件

第二步:重新合并

合并提交信息页面,使用 :wq! 或者 :q! 正常退出 VIM ,就能正常合并啦。
PS: 如果 .git/MERGE_* 文件中 只有 MERGE_MSG 文件的话,不用执行 git merge -abort ,直接删除 .MERGE_MSG.sw* 文件就好。
其实就是两个分支在合并的时候合并文件非正常退出,或者合并文件正在被另一个程序修改(换句话说就是别人也在执行两个分支合并这件事),我觉得最佳方案是,先终止合并,删除 vim 非正常关闭产生的文件,询问团队内是否有人在执行合并,如果没人,此时再重新执行合并。