원격 저장소에 잘못 올라간 git commit 삭제 & 되돌리기 (ft. .vs 폴더의 정체)

Jiumn·2023년 6월 30일
0

문제 상황

다른 브랜치에서 작업하다가 브랜치를 바꿔야 할 일이 있어서 git stash를 사용했다.
그런데 갑자기 .vs 폴더에 알 수 없는 파일(vsidx, read.lock
slnx.sqlite 등...)들이 생겼다.

+ 찾아보니 .vs 폴더 안에 있는 vsidx 확장자 파일은 visual studio랑 연관이 있다고 한다. (코드 인덱싱 기능과 관련이 있다고 함) .vs 폴더 안의 다른 파일들도 마찬가지인 것으로 보인다. 타임라인을 돌아보니 내가 visual studio를 설치하고 나서부터 생긴 증상이었다.

게다가 브랜치를 바꾸고 원하는 작업 내역만 골라서 commit 후 push했다고 생각했는데...
몰랐던 사이에 .vs 폴더에 있던 파일들이 같이 commit 되어 원격 저장소에 push가 되어버린 걸 확인했다.

원격저장소의 커밋 기록을 되돌리기 전에 우선 .vs 폴더에 생긴 알 수 없는 파일들을 삭제하려고 했으나, 이 파일들이 vsc에서 오른쪽 마우스 버튼을 눌러 delete를 하려고 해도 삭제가 되지 않았다.

Error: EBUSY: resource busy or locked unlink

경고창에 이런 식의 메시지가 뜨면서 삭제가 되지 않았다.

해결

vsc에서 마우스로 직접 삭제하는 방법 대신 터미널에서 untracked file(git이 추적하지 않는 파일)을 삭제하는 명령어를 입력했다.

git untracked 파일 모두 삭제

git clean -f

git untracked 폴더 모두 삭제

git clean -fd

삭제가 됐다.

다음은 원격 저장소에 올라간 commit 기록을 지워야 한다.
원격 저장소에서 바로 지울 수는 없고 1) 로컬 저장소의 해당 commit을 먼저 삭제한 후 2) 원격 저장소에 강제 push를 한다.

바로 직전의 커밋 삭제

git reset HEAD~1

~n 부분에 삭제를 원하는 커밋 개수를 적어준다.
나는 직전의 커밋만 삭제하기 위해 1을 입력했다.

원격 저장소에 강제 push

git push -f origin [원격 브랜치 명]

-f 옵션을 사용해 강제로 원격 저장소의 브랜치에 push 했다.

profile
Back-End Wep Developer. 꾸준함이 능력이다. Node.js, React.js를 주로 다룹니다.

0개의 댓글