:ledger: Swap file already exists 왜자꾸 뜨는 걸까?

이번 프로젝트를 진행하며, 우리 팀을 정말 난처하게 만들었는던 .swap 파일 경고를 해결한 글 입니다.

:one: 개요

프로젝트 순항 중 깃에서 pull을 받을 때 모두가 아래와 같은 경고가 노출이 되었다. 어떤 경고이고 어떻게 해결했는지 정리해봤다.

git swap file error

:two: 원인

아마 누군가 vi 에디터(vim)을 사용 중 터미널을 비정상적으로 종료한 일이 있는 것 같다. 위의 캡쳐 이미지와 같이 그 때 당시 생겨난 .MERGE_MSG.swap파일로 “응~ 이거 안지우면 난 계속 경고를 말해줄거야”라고 말하는거다. 또는, 아래와 같은 이유가 있을 수 있다.

  • 시스템 오류: 운영 체제의 충돌이나 강제 재부팅으로 인해 에디터가 강제로 종료될 수 있음.
  • 전원 문제: 전원 공급이 중단되어 컴퓨터가 갑자기 꺼지면, 에디터도 비정상적으로 종료됨.
  • 사용자 실수: 사용자가 터미널에서 잘못된 명령어를 입력하거나, 다른 프로그램을 강제로 종료하면서 vi가 비정상적으로 닫힐 수 있음.
  • 프로세스 강제 종료: 시스템 관리자가 kill 명령어를 사용해 vi 프로세스를 강제로 종료한 경우도 비정상 종료로 간주됨.

:three: 해결방법

해결방법은 .swap파일을 삭제하면 되는데, 확인 안하고 삭제하게 되면 비정상적으로 종료되기 전에 있었던 내용이 적용 안되고 삭제될 수 있다.

:pushpin: 3-1) 그럼 어떻게 하라는거야?

swap 파일은 앞에 .이 붙어 터미널에서 ls -al 명령어를 통해 확인 후 문제가 없으면 제거하는 것이 좋다.

ls -al

rm -f 파일명.swap

:pushpin: 3-2) 뭔가 삭제될까봐 무서워

이럴 경우 캡쳐 이미지처럼 5가지의 문항, [O], [E], [R], [Q], [A]가 노출될 때 [R]ecover(복구)를 실행하기 위해 r을 입력한다. 그리고 복구한 파일 내용을 확인하고 :wq! 입력해서 파일을 저장한다.

:pushpin: 3-3) 몰라~ 난 swap 파일 다 삭제할래

자꾸 .swap file 경고창이 노출되고, 위와 같은 방법으로도 해결을 하지 못했을 때! 파일이 삭제 될 지 모르니까 백업하고 터미널에서 아래의 명령어를 입력한다. 다시 말하지만 .swap 파일을 삭제하기 전에 파일이 사용 중인지, 중요한 파일인지 확인은 필수다!

  • .swap 파일 찾기
    • 아래와 같이 find명령어를 사용하여, 본인의 디랙토리로 설정 후 스왑파일을 찾는다.
find ~/ -type f -name "*.swap"
  • .swap 파일 삭제하기
    • 스왑파일이 많을 경우, 그냥 다 삭제하고 싶을 때는 본인의 디랙토리 설정 후 -delete 를 추가해서 검색한 모든 .swap파일을 삭제한다.
find ~/ -type f -name "*.swap" -delete

:four: 요약

  • vi 에디터(vim)을 비정상적으로 종료해서 .swap파일이 생성됨
  • git에서 pull 받을 때 마다 죽음의 5지선다로 swap파일 이 노출됨
  • 직접 찾아서 삭제해주거나, 경고 문구가 노출될 때 복구하고 파일을 저장함
  • 그냥 swap 파일이 상관없으면 다 삭제하려면 터미널에서 find 명령어를 사용해서 삭제해버리면 됨

:fire: 마무리

처음 겪어본 에러라서 정말 당혹스러웠지만 나와 팀원들은 겁이 많아서 계속 [R]을 선택해 파일을 복구 및 저장하는 방향으로 진행했다. 그래도 Pull받을 때 마다 노출되어서 정말 화났는데, 응 그래도 계속 복구하고 저장할거야~ 선택하니까 어느순간 부터 보이지 않게 되었다.