Найден файл подкачки по названию
Когда я пытаюсь объединить ветку с удаленной ветвью:
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:
Как с этим бороться?
Ответы
Ответ 1
Похоже, у вас есть открытый git commit
или git merge
, и редактор все еще открыт для редактирования сообщения фиксации.
Два варианта:
- Найдите сеанс и завершите его (предпочтительно).
- Удалите файл
.swp
(если вы уверены, что другой сеанс git пропал).
Уточнение из комментариев:
- Сессия является сессией редактирования.
- Вы можете увидеть, что
.swp
используется, введя команду :sw
в сеансе редактирования, но обычно это скрытый файл в том же каталоге, что и используемый .swp
файл, с суффиксом файла .swp
(т.е. ~/myfile.txt
будет ~/.myfile.txt.swp
).
Ответ 2
В принятом ответе не упоминается, как удалить файл .swp.
Нажмите "D", когда появится приглашение, и оно будет удалено.
В моем случае, после того, как я нажал D, он оставил последнюю сохраненную версию без изменений и удалил .swp, который был создан, потому что я неправильно вышел из VIM.
Ответ 3
У меня также была эта ошибка при попытке перетащить изменения в ветку, которая не создана из ветки восходящего потока, из которой я пытаюсь потянуть.
Eg - создает новую ветвь, соответствующую 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.
Ответ 4
.MERGE_MSG.swp открыт в вашем git, вам просто нужно удалить этот .swp файл. В моем случае я использовал следующую команду, и она работала нормально.
rm .MERGE_MSG.swp