![](https://blog.kakaocdn.net/dn/0TPIC/btsHZgy8giK/LWzKFJQmFFWeLzQadq3Ez1/img.png)
![](https://blog.kakaocdn.net/dn/Jiuok/btsHZslRwuk/w2LvkHfgT9p5iRE9k2a6kK/img.png)
A 브랜치에서 B 브랜치로 넘어갔는데 A 브랜치의 내역이 B 브랜치에 적용되고 A 브랜치의 내역이 삭제되는 문제가 발생했다. 이러한 문제는 가끔 VSCode에서 브랜치 토글이 제대로 되지 않을 때 발생하는데, 해결방법은 아래와 같다.
1. VSCode 강제 종료 및 재실행
- VSCode 강제 종료: 현재 열려 있는 VSCode를 강제 종료한다.
- VSCode 재실행: VSCode를 다시 실행한다.
대부분의 경우 VSCode를 종료하고 재실행하면 문제가 해결된다.
2. . git/HEAD.lock 파일 삭제
강제 종료 후 VSCode를 다시 열었음에도 불구하고 문제가 지속된다면 아래의 방법을 사용하면 된다.
1.Git Clean 커맨드 실행
우선 작업중인 디렉터리의 불필요한 폴더와 파일을 제거한다.
git clean -fd
2. . git/HEAD.lock 파일 삭제
아래 명령어를 사용하여 .git/HEAD.lock 파일을 삭제하면, Git이 다른 명령을 정상적으로 실행할 수 있게 된다.
rm -f .git/HEAD.lock
3. 체크아웃
원하는 브랜치로 다시 체크아웃한다.
git checkout 브랜치 이름
.git/HEAD.lock 파일이란?
.git/HEAD.lock 파일은 Git 명령이 실행될 때 생성되는 잠금 파일이다. 이 파일은 다음과 같은 역할을 한다.
- 동시 실행 방지: 여러 Git 명령이 동시에 실행되어 충돌하는 것을 방지한다.
- 비정상 종료 감지: 명령이 비정상적으로 종료되면.git/HEAD.lock 파일이 남아 있게 되어, Git이 이를 감지하고 다른 명령의 실행을 막아 데이터 손상을 방지해준다.
따라서 .git/HEAD.lock 파일이 남아 있을 경우 수동으로 삭제해 주어야 Git이 정상적으로 작동한다.