Git checkout
‘git checkout’는 Git 저장소 내에서 브랜치(branch), 커밋(commit), 파일 상태(file state)를 전환하거나 복원하는 명령어이다.
개요[편집 | 원본 편집]
git checkout 명령어는 현재 작업 디렉터리(working tree)와 HEAD가 가리키는 브랜치를 업데이트하여, 사용자가 지정한 브랜치나 커밋의 스냅샷(snapshot)으로 전환한다. [1] 이 명령어로 다음과 같은 작업이 가능하다.
- 이미 존재하는 로컬 브랜치로 전환
- 새로운 브랜치 생성 후 전환
- 원격(remote) 브랜치로부터 로컬 브랜치를 생성하고 전환
- 특정 커밋이나 태그(tag) 상태로 작업 디렉터리를 변경하여 과거 상태 검토
- 특정 파일만 지정한 브랜치/커밋 상태로 되돌리기
주요 사용법[편집 | 원본 편집]
브랜치 전환[편집 | 원본 편집]
로컬에 존재하는 브랜치로 전환할 때는 다음과 같이 사용한다.
git checkout <브랜치명>
예:
git checkout main
이렇게 하면 현재 HEAD가 <브랜치명>이 가리키는 커밋으로 바뀌고, 작업 디렉터리의 파일들도 그 브랜치의 최신 상태로 업데이트된다.
새 브랜치 생성 + 전환[편집 | 원본 편집]
브랜치를 새로 만들면서 동시에 전환하고자 할 때는 -b 옵션을 사용한다.
git checkout -b <새브랜치명>
이 명령은 git branch <새브랜치명>과 git checkout <새브랜치명>을 한 번에 실행하는 것과 동일하다.
원격 브랜치 체크아웃[편집 | 원본 편집]
로컬에 해당 브랜치가 없는 원격 저장소의 브랜치를 체크아웃하려면 아래와 같이 한다.
git fetch origin
git checkout -b <로컬브랜치명> origin/<원격브랜치명>
또는 Git 버전에 따라
git checkout <원격브랜치명>
만으로 로컬 브랜치가 자동 생성되기도 한다.
커밋 또는 태그 체크아웃(Detached HEAD 상태)[편집 | 원본 편집]
브랜치가 아닌 특정 커밋이나 태그를 체크아웃하면 HEAD가 브랜치를 가리키지 않고 직접 커밋을 가리키게 되며, 흔히 detached HEAD 상태라고 한다.
git checkout <커밋해시>
git checkout <태그명>
이 상태에서는 새로운 커밋을 만들더라도 브랜치가 아니라 단순히 HEAD가 따라가게 되며, 브랜치를 생성하지 않으면 나중에 참조가 사라질 수 있다.
파일만 특정 상태로 되돌리기[편집 | 원본 편집]
작업 디렉터리 내 특정 파일만 지정한 브랜치 또는 커밋 상태로 되돌리고 싶을 경우 다음과 같이 한다.
git checkout <브랜치명> -- <파일경로>
예:
git checkout main -- src/app.js
이렇게 하면 src/app.js 파일만 main 브랜치 최신 커밋 상태로 되돌려지고, 나머지 파일들은 그대로 유지된다.
주의사항[편집 | 원본 편집]
- 작업 디렉터리에 커밋되지 않은 변경 사항이 있을 경우, 브랜치를 전환하거나 커밋을 체크아웃하면 충돌(conflict)이 발생할 수 있다.
- 최신 Git 버전에서는 git switch, git restore 명령이 각각 브랜치 전환 및 파일 복원 용도로 권장된다.
- 원격 브랜치를 체크아웃하기 전에 git fetch를 통해 최신 정보를 받아야 한다.
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- “git-checkout Documentation”, Git SCM. <https://git-scm.com/docs/git-checkout>