본문 바로가기

S급 프론트엔드 개발자로 회귀하다

Git 개념 잡기 : add, commit, branch, head, checkout, log (010화 - S급 프론트엔드 개발자로 회귀하다)

반응형

 

git이란, 버전관리 도구이다.

프로젝트를 진행하면서 다양한 기능들을 구현하거나 디자인 레이아웃 등을 작성하여 적용하게 되는데,

수많은 작업들에 대해 단계적으로 구현을 진행하게 되므로 만들어지는 과정을 기록하기 위해 중간중간 저장을 할 필요가 있다.

 

 

 

git은 snapshot이라고 하는 찰칵! 기능을 이용하여 작업하는 중간에 한번씩 저장을 하게 되고, git을 사용하는 개발자는 특정 기능의 구현이 완료되거나 테스트가 완료되었을 때 찰칵 하여 진행 사항을 저장한다.

이 찰칵! 기능을 git에서는 Commit 이라고 한다.

 

 

 

결혼식장에서 본판 사진 촬영을 할때에, 사진에 등장할 인물에 따라 무대로 올라가는 사람들이 가족, 친척, 친구나 회사동료 등이 될 수 있는데, git에서도 마찬가지로 프로젝트 내의 내가 원하는 추적 파일들만 골라서 무대위로 올리는 작업을 한다.

이를 Staging area에 추가한다고 하여, Add라고 한다.

 

여기서 한번 정리해보면, 프로젝트에서 새로 생성된 특정 파일을

git add SOMETHING-FILE 하고,

git commit 하여 찰칵! 찍으면 snapshot이 생성되어 하나의 저장 결과물이 생성된다.

git log를 입력하면, 지금까지 commit한 기록을 확인할 수 있다.

 

 

 

git의 commit은 트리구조 형태로 구성이 되는데, 커밋 하나가 노드가 되며, 여러개의 커밋이 쌓이면 결국 여러개의 노드로 이루어진 커다란 나뭇가지가 된다.

각 커밋 노드들은 서로 이어져있어서, 계층 구조를 가지게 된다.

 

 

 

branch는 git의 특정 커밋을 가리키는 참조자이다.

보통 git init으로 초기화하여 git 프로젝트를 생성하면, main 또는 master라고 하는 브랜치가 자동으로 생성이 된다.

master 또는 main 브랜치는 일반적인 경우에 가장 마지막 커밋을 참조하고 있는 참조자이다.

 

 

 

 

HEAD라고 하는 참조자도 있는데, HEAD 참조자는 현재 체크아웃된 브랜치가 가리키는 커밋을 가리키고 있다.

또한, git 프로젝트의 상태는 HEAD 참조자가 있는 위치를 기준으로 버전이 변경되는데,

만약 git checkout main 이라고 하면, main이라고 하는 branch의 가장 최신 커밋으로 버전이 변경된다.(보통 특정 브랜치는 해당 브랜치의 가장 마지막 commit을 참조하고 있기에..)

git checkout main2라고 하면, main2라고하는 branch의 가장 최신 커밋으로 버전이 또 변경되는 원리이다.

 

HEAD는 기업의 각 부서의 부장들을 관리하는 사장같은 존재이다.

정리하자면, HEAD는 특정 커밋을 참조하는 참조자인 브랜치를 가리키는 참조자라고 할 수 있다.

그리고, head는 git checkout [브랜치 또는 커밋 이름] 이라는 명령어로 컨트롤하게 된다.

branch 말고, commit의 hash를 입력해서 직접 참조하는것이 가능하다! (사장님이 특정 부서의 직원을 나노컨트롤할 수도 있으니까..)

반응형