Git에서 '현재 분기'라는 개념은 가까이 들여다보면 모호성을 보여준다. Git 용어집에서 .git/HEAD 파일의 내용으로 정의되지만, 'git status' 출력, 마지막으로 체크아웃한 분기, 쉘 프롬프트 등 다른 해석들도 있다. 이러한 해석들은 일반적으로 일치하지만, 분리된 HEAD 상태, 태그 체크아웃, 리베이스 중인 상황 등에서 다르다. 예를 들어 태그를 체크아웃하면 .git/HEAD에는 커밋 ID가 저장되지만, 'git status'는 사용자 편의를 위해 태그 이름을 표시한다. 리베이스 중에는 'git status'가 리베이스 상태를 강조표시하지만, 쉘 프롬프트는 원래의 분기를 나타낸다. 심지어 'git init'에서도 '현재 분기'가 명시적으로 체크아웃하지 않고도 자동으로 설정된다. bare 저장소에서는 'git status'와 'git checkout'이 작동하지 않아 추가적인 복잡성이 발생한다. 이러한 불일치점들은 '현재 분기'를 엄격하게 정의하는 제약을 보여주고, 문맥에 따른 이해의 중요성을 강조한다. '현재 분기'가 새로운 커밋의 대상이라고 일반적으로 생각되지만, 리베이스 중에는 최종적으로 원래의 분기에 커밋이 랜딩하는 경우에는 그러하지 않다. '현재 분기'가 Git 작업의 문맥을 나타낸다고 생각하는 것은 타당하지만, bare 저장소에서 'git status'가 다르게 작동하는 등 불일치점들이 있다. 최종적으로 '현재 분기'의 모호성을 이해하려면 .git/HEAD, 'git status' 출력, 마지막 체크아웃 액션 등 다양한 지표를 고려해야 한다.
jvns.ca
The "current branch" in git
Create attached notes ...
