[GitLab] 돌아와!! 사라진 내 브랜치 - 'git status 에러 128'

📜 [ 개요 ]

늘 회사에서 작업하는데, 갑자기 내 소스트리의 master 브랜치가 사라지고 보이지 않아서 당황했다. 

황급히 git lab 들어가서 확인해 봤는데, 원격에는 아직 남아 있어서 천천히 복구 작업을 진행했다. 

etc-image-0

 


 

🤜 [ 시도 ]

 

구글에 찾아보니 아래와 같은 명령어를 bash에 입력하라 해서 입력해 봤다. 

 

git config --global --add safe.directory '*'


git config --global --add safe.directory '*'
: 모든 디렉터리를 안전한 디렉터리로 설정 (보안에 주의해야함)

놀랍게도 아무 일도 일어나지 않았고, master 브랜치는 찾을 수 없었다. 
그래서 다른 명령어로 해결을 하였다. 

+)  여기저기 찾아보니 왜 나와 같이 master 브랜치를 찾을 수 없는 경우에도 저 로그가 뜨냐면 
git은 Head가 가리키는 브랜치 정보를 refs/heads/<branch>에서 찾는데, master 브랜치가 없어도 저 에러가 난다고 한다. 

 

 


 

👍 [ 해결 ] 

1. 원격 저장소의 모든 브랜치 정보를 가져오자. 
2. git checkout master를 해보자.
3. 로컬 master 브랜치를 제거하자. 
4. 내 로컬의 변경사항을 다 제거하고 master를 다시 체크아웃받자 


1. 원격 저장소의 모든 브랜치 정보를 가져오자. 

$ git fetch --all

- 원격 저장소의 모든 브랜치 정보를 가져옴 

- 로컬 브랜치에는 영향을 주지 않고, 원격 정보만 업데이트함 


2. git checkout master를 해보자.

$ git checkout master 

- 현재 브랜치를 master 브랜치로 변경

- 즉 로컬에서 master 브랜치로 이동하는 명령어 

git fetch --all

git checkout master

 

여기까지 해봤는데, 복구되지 않아서 다음 명령어를 진행했다. 

 

etc-image-1

3. 로컬 master 브랜치를 제거하자. 

$ rm -f. git/refs/heads/master 

-. git/refs/heads/master 파일을 삭제 -> 로컬 master 브랜치를 제거함. 

- 하지만 원격에는 영향을 주지 않음

- 그리고 git bash 사용 중이면 rm 명령어로 삭제 가능! 

rm -f .git/refs/heads/master

 

 

4. 내 로컬의 변경사항을 다 제거하고 master를 다시 체크아웃받자 

$ git reset --hard 

- 수정한 파일 -> 삭제

- git add  한 파일 -> 삭제 
- 커밋하지 않은 모든 변경사항 -> 삭제 

 

git reset --hard

 

 로컬의 모든 변경점을 깔끔하게 함. 

 

그리고 소스트리 사용하여 pull 받아서 master 브랜치 새로 받아서 복구했다.