Git | Git 브랜치 | git checkout


git checkout 명령어

git checkout 은 git branch 명령에 의해 생성 된 지점 사이를 이동하는 명령입니다. 지점의 체크 아웃을 수행하여 작업 디렉토리의 파일이 해당 분기에 저장되어있는 버전으로 업데이트 된 후 모든 새 커밋은 해당 분기에 기록됩니다. 이 명령은 작업 개발 라인을 선택하는 수단이라고 생각할 수 있습니다.

앞 장 에서 과거의 커밋을 볼 경우 git checkout 명령의 사용법을 설명했습니다. 지점의 체크 아웃은 지정된 지점 또는 버전에 일치하도록 작업 디렉토리가 업데이트된다는 점에서는 비슷하지만 작업 디렉토리에 변경 사항이 남아 있다면 그것이 프로젝트 기록에 저장 된다 라는 점이 다릅니다. 즉이 명령은 읽기 전용 조작은 없다.

사용법

git checkout <existing-branch>

git branch 명령을 사용하여 만든 브랜치를 체크 아웃하는 명령입니다. 이 명령을 실행하면 <existing-branch>가 현재 브랜치가되고, 그것 일치하도록 작업 디렉토리가 업데이트됩니다.

git checkout -b <new-branch>

신규 지점 <new-branch>를 작성하여 즉시 체크 아웃하는 명령입니다. -b 플래그는 git branch <new-branch> 명령을 실행 한 다음 git checkout <new-branch> 을 실행하기 편리한 플래그입니다.

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

상기 명령과 동일한 기능이지만, 그러나 현재 브랜치가 아니라 <existing-branch> 새 분기 기점으로합니다.

보충 설명

git checkout 은 git branch 명령과 함께 명령입니다. 새로운 기능 개발을 시작하는 경우 git branch 명령을 사용하여 분기를 만든 다음 git checkout 명령을 사용하여 그것을 체크 아웃합니다. 하나의 저장소에서 git checkout 명령을 사용하여 기능을 전환하여 여러 기능의 개발 작업을 할 수 있습니다.

Git 튜토리얼 : git checkout을 사용하여 하나의 저장소 내에서 여러 기능 전환.

개별 기능에 대해 각각 전용 지점을 설치함으로써 SVN을 기반으로 기존의 워크 플로우와는 크게 다른 기술이 제공 할 수 있습니다. 이에 따라 기존의 기능을 손상 우려를 발생하지 않고 새로운 실험적인 개발을 할 쉽게 가능하며, 또한 관련이없는 여러 기능 개발을 동시에 수행 할 수있게되었습니다. 이외에 지점의 도입으로 여러 협업 워크 플로우를 쉽게 채용 할 수있게되었습니다.

Detached HEAD

git checkout 세 가지 사용법을 학습했기 때문에 여기에서 앞 장에서 언급 한 “detached HEAD “에 대해 설명하고 둡시다.

앞서 언급 한 바와 같이, HEAD 는 Git에서는 현재 스냅 샷의 참조를 의미하고 git checkout 을 실행하면 HEAD 포인트 위치를 지정하는 지점 또는 커밋으로 이동합니다. 포인트 처가 지점이면 아무 문제가 없지만 커밋을 체크 아웃 한 경우에는 “detached HEAD “상태로 전환됩니다.

Git 튜토리얼 : Detached Head

이것은이 상태에서 수행 된 작업은 모든 프로젝트의 다른 개발 작업과 “분리되어있다"고 경고하는 것입니다. detached HEAD 상태 기능 개발을 시작해서 거기로 돌아가 지점은 생성되지 않습니다. (예를 들면 기능을 병합 할 생각으로) 다른 브랜치를 체크 아웃 해 버리면 그 기능을 참조 할 수 없습니다 :

Git 튜토리얼 : Detached Head 상태

중요한 것은 개발 작업은 항상 지점에서 실시하여야하며, detached HEAD 에 가서는 안된다는 점입니다. 이것은 커밋에 대한 참조 방법을 항상 보장하는 것입니다. 그러나 과거의 커밋을 볼 뿐이라면, detached HEAD 상태 여부를 걱정할 필요는 없습니다.

사용 예

다음 예제는 Git의 브랜치의 기본적인 사용법을 보여줍니다. 새로운 기능 개발 작업을 시작하는 경우 전용 브랜치를 만들고 그것으로 전환합니다 :

git branch new-feature
git checkout new-feature

이렇게함으로써 이전 장에서 설명한 것처럼 새로운 스냅 샷 커밋이 가능합니다 :

# Edit some files
git add <file>
git commit -m "Started work on a new feature"
# Repeat

커밋은 모두 master 브랜치는 독립적 인 new-feature 브랜치에 기록됩니다. 이 상태에서 얼마든지 위탁이 가능하며, 이때 다른 브랜치를 걱정할 필요가 없습니다. “공식"코드베이스에서의 작업으로 돌아가려면 단순히 master 브랜치 체크 아웃을하면 되나요 :

git checkout master

이 명령을 실행하면 기능 개발 작업을 시작하기 전에 저장소의 상태가 표시됩니다. 여기 완료된 기능 병합 새 브랜치를 만들고, 다른 기능의 시작 공식 코드 기반에 대한 작업 등을 할 수 있습니다.