본문 바로가기

공부기록/Git

HEAD와 branch

 

1. git log 명령어 

git log

 

git log로 보는 화면

2. HEAD

HEAD는 현재 나의 위치를 가리키는 포인터

 

branch를 a 브랜치로 전환하게 되면 HEAD는 해당 브랜치의 가장 최근 커밋을 가리킴 

 

master에서 DarkMode라는 branch를 새로 만들었을때 (좌) 새로운 branch에서 commit했을 때 (우)

 

 

 

3. git branch 

git branch

다른 브랜치로 변경하지 않고 현재 가지고 있는 branch를 보여줌 

 


4. 브랜치 생성 

git branch <branch-name>

 

5. 브랜치 이동 

git switch <branch-name>

git checkout 과 동일한 기능이지만, 

checkout으로는 또다른 다양한 작업을 할수 있으므로 git switch라는 명령어가 나온 것. 

(checkout은 브랜치 이동 , 작업트리 복언을 위해 사용가능)

 

 

6. 브랜치 생성 후 해당 브랜치로 이동 

git switch -c <branch-name>
git checkout -b <branch-name>

 

 

작업을 commit하지 않고 브랜치 이동하려 한다면

 

위와 같은 에러가 발생. 

git commit (저장)
git stash (임시저장)

위 둘 중 하나 하고 branch 변경 

 

 

7. 브랜치 삭제 

git branch -d <branch-name>

해당 브랜치의 작업 내역이 모두 삭제될 수 있으므로 주의 

 

만약 커밋내역이 브랜치와 함께 모두 삭제 되어도 괜찮다면 

(주의하자 강제삭제)

git branch -D <branch-name>

 

해당 브랜치에 있다면 지울 수 없으므로 타 브랜치로 이동 후 삭제 

 

 

8. 브랜치명 변경

git branch -m <변경할 branch-name>

현재 위치하고 있는 브랜치 이름을 변경해줌

 

 

9.(참고) .git 폴더의 HEAD파일

 

 

HEAD 파일을 보면 특정 브랜치를 참조하고 있는 것을 알 수 있음 

refs폴더의 heads 디렉토리에 가보면 내가 갖고있는 해당 브랜치의 모든 파일이 있음 

해당 파일에는 커밋 해시가 들어있음.

 

branch를 변경한다면 refs의 heads에는 현재 브랜치 명으로 변경됨.

refs/heads/oldies 파일에는 해당 커밋 hash가 들어있음