Close

Git 체크아웃

이 페이지에서는 git checkout 명령을 검토합니다. 사용 사례와 예외적 사례를 다룹니다. Git 용어로 "체크아웃"이란 대상 엔터티의 다른 버전 간에 전환하는 행위입니다. git checkout 명령은 파일, 커밋 및 브랜치라는 세 가지 엔터티에서 작동합니다. "체크아웃"의 정의 외에도 "체크아웃"이라는 문구는 일반적으로 git checkout 명령을 실행하는 행위를 암시하는 데 사용합니다. 변경 사항 실행 취소 주제에서 git checkout 명령을 사용하여 이전 커밋을 보는 방법을 살펴보았습니다. 이 문서의 대부분은 브랜치에서 이뤄지는 체크아웃 작업에 중점을 둡니다.

브랜치 체크아웃은 작업 디렉터리가 선택된 브랜치/수정과 일치하도록 업데이트된다는 점에서 이전 커밋 및 파일을 체크아웃하는 것과 비슷하지만, 새 변경 사항이 프로젝트 기록에 저장되므로 읽기 전용 작업이 아닙니다.


브랜치 체크아웃


git checkout 명령을 사용하면 git branch로 만든 브랜치 간에 탐색할 수 있습니다. 브랜치를 체크아웃하면 해당 브랜치에 저장된 버전과 일치하도록 작업 디렉터리의 파일이 업데이트되고 Git에 해당 브랜치의 새 커밋을 모두 기록하도록 지시합니다. 작업 중인 개발 라인을 선택하는 방법이라고 생각하세요.

각 새로운 기능에 대한 전용 브랜치를 사용하면 기존 SVN 워크플로와 전혀 다릅니다. 기존 기능을 손상시킬 염려 없이 새로운 실험을 시도하는 것이 매우 쉬워지고, 관련 없는 많은 기능을 동시에 작업할 수 있습니다. 또한 브랜치는 여러 공동 작업 워크플로도 지원합니다.

git checkout 명령을 git clone 명령과 혼동하는 경우가 있습니다. 두 명령의 차이점은 복제는 원격 리포지토리에서 코드를 가져오지만, 체크아웃은 이미 로컬 시스템에 있는 코드 버전 간에 전환한다는 점입니다.

콘솔 창
관련 자료

고급 Git 로그

Bitbucket 로고
솔루션 보기

Bitbucket Cloud에서 Git에 대해 알아보기

사용: 기존 브랜치


작업 중인 리포지토리에 기존 브랜치가 있다고 가정하면 git checkout 명령을 사용하여 브랜치 간에 전환할 수 있습니다. 사용 가능한 브랜치 및 현재 브랜치 이름을 확인하려면 git branch 명령을 실행합니다.

$> git branch 
main 
another_branch 
feature_inprogress_branch 
$> git checkout feature_inprogress_branch

위 예제에서는 git branch 명령을 실행하여 사용 가능한 브랜치 목록을 확인하고 지정된 브랜치(이 경우 feature_inprogress_branch)로 전환하는 방법을 보여줍니다.

새 브랜치


Git checkoutgit branch와 밀접하게 작동합니다. git branch 명령을 사용하여 새 브랜치를 만들 수 있습니다. 새 기능을 시작하려면 git branch new_branch를 사용하여 main 브랜치에서 새 브랜치를 만듭니다. 만든 후에는 git checkout new_branch를 사용하여 새 브랜치로 전환할 수 있습니다. 또한 git checkout 명령은 새 브랜치를 만들고 즉시 전환하는 편리한 방식 역할을 하는 -b 인수를 수락합니다. git checkout을 사용하여 기능 간에 전환하여 단일 리포지토리의 여러 기능을 작업할 수 있습니다.

git checkout -b <new-branch>

위의 예시에서는 를 동시에 만들고 체크아웃합니다. -b 옵션은 Git에 git checkout 를 실행하기 전에 git branch 를 실행하도록 알려주는 편리한 플래그입니다.

git checkout -b <new-branch> <existing-branch>

기본적으로 git checkout -b 명령은 현재 HEAD를 new-branch의 기준으로 삼습니다. 옵션으로 추가 브랜치 매개 변수를 git checkout에 전달할 수 있습니다. 위 예제에서는 existing-branch>가 전달되어 현재 HEAD 대신 existing-branchnew-branch를 기준으로 삼습니다.

브랜치 전환


브랜치 전환은 간단한 작업입니다. 다음과 같이 실행하면 HEAD의 끝을 가리킵니다.

git checkout <branchname>

Git은 참조 로그에서 체크아웃 작업 기록을 추적합니다. git reflog 명령을 실행하여 기록을 볼 수 있습니다.

원격 브랜치에서 Git 체크아웃


팀과 공동 작업할 때는 원격 리포지토리를 활용하는 것이 일반적입니다. 리포지토리는 호스팅 및 공유할 수 있으며, 다른 동료의 로컬 복사본일 수 있습니다. 각 원격 리포지토리는 자체 브랜치 집합을 포함합니다. 원격 브랜치를 체크아웃하려면 먼저 브랜치의 콘텐츠를 가져와야 합니다.

git fetch --all

최신 버전의 Git에서는 원격 브랜치를 로컬 브랜치처럼 체크아웃할 수 있습니다.

git checkout <remotebranch>

이전 버전의 Git에서는 remote를 기반으로 새 브랜치를 만들어야 합니다.

git checkout -b <remotebranch> origin/<remotebranch>

또한 새 로컬 브랜치를 체크아웃하고 마지막으로 커밋한 원격 브랜치로 다시 설정할 수 있습니다.

git checkout -b <branchname>
git reset --hard origin/<branchname>

분리된 헤드


브랜치에서 git checkout의 세 가지 주요 용도를 살펴보았으므로 "detached HEAD" 상태에 대해 논의해야 합니다. HEAD는 Git에서 현재 스냅샷을 참조하는 방법입니다. 내부적으로 git checkout 명령은 지정된 브랜치 또는 커밋 중 하나를 가리키도록 HEAD를 업데이트합니다. 브랜치를 가리키는 경우에는 Git에 변동 사항이 발생하지 않지만 커밋을 체크아웃하면 "detached HEAD" 상태로 전환됩니다.

이것은 수행하는 모든 작업이 프로젝트 개발의 나머지 부분과 "분리"되어 있음을 알려주는 경고입니다. 분리된 HEAD 상태에서 기능 개발을 시작하면 다시 돌아갈 수 있는 브랜치가 없습니다. 필연적으로 다른 브랜치를 체크아웃할 때(예: 기능을 병합하기 위해) 기능을 참조할 수 있는 방법이 없습니다.

첨부된 헤드 및 분리된 헤드 비교

요점은 개발이 항상 브랜치에서 이루어져야 하며 분리된 HEAD에서 이루어져서는 안 된다는 것입니다. 이렇게 해야 항상 새 커밋을 참조할 수 있습니다. 하지만 이전 커밋을 보기만 한다면, 분리된 HEAD 상태에 있는지 아닌지는 크게 중요하지 않습니다.

요약


이 페이지에서는 브랜치를 변경할 때 git checkout 명령을 사용하는 방법에 중점을 두었습니다. 요약하면 git checkout은 브랜치에서 사용될 때 HEAD ref의 대상을 변경합니다. 브랜치를 만들고, 브랜치 간에 전환하고, 원격 브랜치를 체크아웃하는 데 사용할 수 있습니다. git checkout 명령은 표준 Git 작업에 필수적인 도구로, git merge에 상응하는 명령입니다. git checkoutgit merge 명령은 Git 워크플로를 사용하는 데 필수적인 도구입니다.


이 문서 공유
다음 토픽

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

도구로 가득한 벽을 사용하여 협업하는 사람들

Bitbucket 블로그

DevOps 일러스트레이션

DevOps 학습 경로

Atlassian 전문가와 함께 하는 Demo Den 기능 데모

Bitbucket Cloud가 Atlassian Open DevOps와 작동하는 방법

DevOps 뉴스레터 신청

Thank you for signing up