본문 바로가기
개발툴/Git&Github

GitHub에서 삭제한 브랜치가 Git Bash에 여전히 표시되는 이유와 해결 방법

by GangDev 2024. 3. 23.

내 상황은 대강 이렇다.

 

Github의 원격 저장소에서 'pilwoo' 브랜치를 삭제했는데, git bash에서 브랜치를 검색해보니,빨간 글씨로 remotes/origin/pilwoo, 즉 아직 원격저장소에 남아있다고 한다.
난 분명 지웠는데 왜 남았을까 생각 좀 했고, 혹시 업데이트를 하지 않아서 그런가 추측했다.
결론적으로 내 예측은 맞았는데, 좀 더 구체적인 이유가 궁금했다.

 

일단 주된 원인은 로컬 Git 저장소의 참조가 아직 원격 저장소의 최신 상태를 반영하지 않아서이고,
Git은 기본적으로 원격 저장소의 상태를 자동으로 업데이트하지 않는다고 한다.
뭐, 네트워크 사용을 최소화하고 사용자가 수동으로 명령을 내릴 때만 원격 저장소의 정보를 업데이트하기 위해서란다.

 

내가 생각하기에도 만약 자동으로 업데이트를 하게 된다면, 안 그래도 민감한 데이터인데 의도치 않은 흐름으로 오류가 나서 꼬일 수도 있기에, 조금 귀찮더라도 안정성을 위해 수동으로 하는 게 나을 것 같다.

 

그러면 git bash에서도 삭제된 채로 보이게 하려면 어떤 명령어를 써야 할까.

 

git fetch --prune

 

fetch는 pull에서 merge를 뺀 것, 즉 원격 저장소의 최신 상태를 가져오는 것이다.
prune은 불필요한 가지를 친다는 뜻을 가지고 있는데, 원격 저장소에서 삭제된 브랜치에 대한 로컬의 참조도 제거한다.

 

즉 위 코드를 실행하면 원격 브랜치에서 최신 상태를 가져오면서, 삭제된 pilwoo 브랜치에 대한 로컬의 참조를 제거한다는 뜻이다.

 

이리하여 궁금증 하나 해결...