【问题标题】:Found a swap file by the name通过名称找到一个交换文件
【发布时间】:2012-11-13 13:39:41
【问题描述】:

当我尝试将我的分支与远程分支合并时:

git merge feature/remote_branch

我收到了这条消息:

E325: ATTENTION
Found a swap file by the name ".git/.MERGE_MSG.swp"
          owned by: xxxxxx   dated: Mon Nov 12 23:17:40 2012
         file name: ~xxxxxx/Desktop/My-ios-App/.git/MERGE_MSG
          modified: YES
         user name: xxxxxx   host name: unknown-b8-8d-12-22-27-72.lan
        process ID: 1639
While opening file ".git/MERGE_MSG"
             dated: Tue Nov 13 14:06:48 2012
      NEWER than swap file!

(1) Another program may be editing the same file.
    If this is the case, be careful not to end up with two
    different instances of the same file when making changes.
    Quit, or continue with caution.

(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r .git/MERGE_MSG"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".git/.MERGE_MSG.swp"
    to avoid this message.

Swap file ".git/.MERGE_MSG.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

如何处理?

【问题讨论】:

    标签: git github git-merge dvcs swapfile


    【解决方案1】:

    看起来您有一个打开的 git commitgit merge 正在进行,并且编辑器仍在打开编辑提交消息。

    两个选择:

    1. 找到会话并完成它(最好)。
    2. 删除 .swp 文件(如果您确定其他 git 会话已消失)。

    来自 cmets 的澄清:

    • 会话是编辑会话。
    • 您可以通过在编辑会话中输入命令:sw 来查看正在使用的.swp,但通常它是与您正在使用的文件位于同一目录中的隐藏文件,文件后缀为.swp (即~/myfile.txt 将是~/.myfile.txt.swp)。

    【讨论】:

    • 如何找到这个 .swp 文件?
    • 如何找到“会话”——这是什么意思?
    • 完成后,我应该选择什么选项?编辑或恢复它?@trojanfoe
    • 您能否详细说明如何完成会话或删除文件?
    • 有关如何删除 .swp 文件的详细信息,请参阅下面的答案
    【解决方案2】:

    已接受的答案未提及如何删除 .swp 文件。

    出现提示时点击“D”,它将删除它。

    在我的情况下,在我点击 D 后,它保留了最新保存的版本并删除了 .swp 因为我错误地退出了 VIM 而创建的 .swp

    【讨论】:

    • 谢谢你——感谢在 bash 程序中制作这个的人——应该有如下注释:“如果你想保留你的更改,并删除旧的更改 - 按 D "
    • 或者直接点击 git clean -f
    【解决方案3】:

    .MERGE_MSG.swp 在你的 git 中打开,你只需要删除这个 .swp 文件。就我而言,我使用了以下命令,它运行良好。

    rm .MERGE_MSG.swp
    

    【讨论】:

    • 添加到这个:文件夹可能是隐藏的,所以你首先必须运行:cd .git
    • rm: .MERGE_MSG.swp: 没有这样的文件或目录
    • 要运行该命令,如果您的 .MERGE_MSG.swp 是隐藏的,则必须转到该文件所在的目录。 @ScottyBlades
    【解决方案4】:

    我在尝试将更改拉入不是从我尝试拉出的上游分支创建的分支时也遇到此错误。

    例如 - 这会创建一个与上游 night-version 匹配的新分支

    git checkout upstream/night-version -b testnightversion
    

    这会在本地创建一个分支 testmaster,它与上游的 master 分支匹配。

    git checkout upstream/master -b testmaster 
    

    现在如果我尝试将night-version 的更改拉入testmaster 分支会导致此错误。

    git pull upstream night-version //while I'm in `master` cloned branch
    

    我设法通过导航到正确的分支并拉取更改来解决这个问题。

    git checkout testnightversion
    git pull upstream night-version // works fine.
    

    【讨论】:

      【解决方案5】:

      2022 年 2 月更新:

      删除.MERGE_MSG.swp 以避免E325: ATTENTION

      rm .MERGE_MSG.swp
      

      通常.example.swp 文件并不重要。

      此外,通常.example.swp 文件是在原始文件的同一目录中制作的。然后,您无法在终端上列出带有ls.example.swp 文件。您需要使用llls -a 命令在终端上列出.example.swp 文件。

      【讨论】:

        【解决方案6】:

        更多信息... 有时 .swp 文件可能由在后台运行的 vm 持有。 尝试删除文件时,您可能会看到权限被拒绝消息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-15
          • 2015-11-10
          • 2012-03-14
          • 2015-02-13
          • 2019-12-17
          • 2019-07-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多