2022. 8. 2. 21:32ㆍGIT
브랜치를 생성하고 해당 브랜치에 커밋을 하려면 브랜치로 이동해야한다.
체크아웃
체크아웃은 객실을 비우고 떠나는 것을 의미한다.
→ 현재 브랜치를 떠나 새로운 브랜치로 들어간다는 의미다.
깃에서 브랜치 간 이동할 때는 checkout 명령어를 사용한다.
$ git checkout 브랜치이름
워킹 디렉토리는 선택한 브랜치 하나만 연결되어 있다.
즉, 한 브랜치에서만 작업과 커밋을 할 수 있다. 다른 브랜치에서 작업하려면 브랜치를 변경하여 워킹 디렉토리를 재설정해야 한다.
※ 워킹 디렉토리에 커밋하지 않은 내용이 있다면 브랜치를 변경할 수 없다.
깃의 체크아웃은 거의 순간적으로 실행된다.
깃은 빠르게 포인터를 이용하여 빠르게 브랜치를 이동할 수 있는 것이 장점이다.
※ 체크아웃 방식
브랜치 외에 특정 커밋이나 파일로도 체크아웃이 가능하다.
$ git checkout 브랜치이름
$ git checkout -- 파일이름
브랜치 동작 원리
checkout 명령어로 브랜치가 변경되면 깃은 내부적으로 몇 가지 동작을 수행한다.
HEAD는 항상 변경된 브랜치의 마지막 커밋을 가리킨다.
이처럼 HEAD가 브랜치의 마지막 커밋을 의미하기 때문에 브랜치가 이동하면 HEAD 포인터도 함께 이동한다.
변경된 브랜치로 새로운 작업을 할 수 있도록 워킹 디렉토리를 변경한다.
브랜치를 변경하려면 기존 브랜치의 워킹 디렉토리를 정리해야 한다.
기존 브랜치의 워킹 디렉토리를 정리하지 않고서는 브랜치를 변경할 수 없다.
소스트리에서 브랜치 이동
브랜치 탭에서 이동하고자 하는 브랜치에 마우스 우클릭 - 체크아웃 메뉴를 선택하면 해당 브랜치로 이동된다.
이전 브랜치
브랜치를 이동하려면 브랜치 이름을 적어 주어야한다.
하지만 새로운 브랜치가 아닌 이전 브랜치로 좀 더 편하게 이동할 수 있는 방법이 있다.
대시(-)를 사용하는 방법이다.
리눅스에서 대시(-) 기호는 이전 디렉토리를 의미한다.
워킹 디렉토리 정리
체크아웃을 사용하여 브랜치를 이동할 때 현재 작업하고 있는 워킹 디렉토리를 정리하고 넘어가야 한다.
브랜치 이동 시 워킹 디렉토리도 같이 변환되기 때문에 워킹 디렉토리 안에서 작성하던 내용이 있고 커밋을 하지 않았다면 체크아웃할 때 경고가 발생한다.
master 브랜치에서 test.html 파일을 수정하고 커밋하지 않고 footer 브랜치로 이동했다.
test.html 파일 수정된 상태라는 메시지가 보인다.
깃은 향후 충돌을 방지하려고 워킹 디렉토리에 작업이 남아 있다면 경고 메시지를 보여주고 브랜치를 변경할 수 없게 제한한다.
master 브랜치 최초 커밋에 분기된 브랜치가 footer 브랜치로 그 이후 커밋이 진행되지 않아 두 브랜치의 커밋 위치는 같다.
브랜치간 정상적으로 이동하려면 남아 있는 작업들을 정리해주자.
master 브랜치에서 test.html 파일 수정본을 커밋 완료 후 소스트리를 보니
master 브랜치가 footer 브랜치보다 더 최신 커밋을 가리키는 것을 볼 수 있다.
master 브랜치와 footer 브랜치의 test.html 코드가 다른 것을 확인할 수 있다.
※ 작업된 워킹 디렉토리를 커밋하지 않고 브랜치를 변경할 때는 스태시 기능을 이용하면 좋다.
'GIT' 카테고리의 다른 글
[GIT] HEAD 포인터 (0) | 2022.08.03 |
---|---|
[GIT] 브랜치 로그 (0) | 2022.08.02 |
[GIT] 브랜치 확인 (0) | 2022.08.02 |
[GIT] 브랜치 생성 (0) | 2022.08.02 |
[GIT] 새 작업하기 (0) | 2022.08.02 |