📜 [ 개요 ]
늘 회사에서 작업하는데, 갑자기 내 소스트리의 master 브랜치가 사라지고 보이지 않아서 당황했다.
황급히 git lab 들어가서 확인해 봤는데, 원격에는 아직 남아 있어서 천천히 복구 작업을 진행했다.

🤜 [ 시도 ]
구글에 찾아보니 아래와 같은 명령어를 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
여기까지 해봤는데, 복구되지 않아서 다음 명령어를 진행했다.

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 브랜치 새로 받아서 복구했다.