git
은 개발을 하는 사람들이라면 필수로 사용하고 있는 도구이다. 특히나 팀으로 일을 하게 된다면 말이다. 앞으로 나도 git
을 차분히 공부 및 정리해 나가면서 마스터해 나갈 예정이다.
사담이지만 나는 git에 대하여 배우기전에는 git에 나의 포트폴리오를 올려 혹시나 수정이 되면 의미 없는 commit을 하기에 급급했었다. 하지만 생각보다 git의 기능은 무궁무진했다.
commit은 git 저장소(원격저장소)에 내가만든 디렉토리(로컬저장소)에 있는 모든 파일에 대한 정보를 기록하는 것이다. 앞으로 git에대한 용어들은 Learn git Branching을 참조하여 기록할 것이다.
왼쪽은 commit 하기전의 git의 모습, 오른쪽은 후의 모습이다. 이렇게 commit을 하면 할수록 내가 코드 변경을 한 기록들이 부모노드(previous commit)을 가리키며 늘어난다. branch가 main으로 설정되어있으므로 main이 가리켰던 노드를 새로운 노드가 가리키고 새로운 노드를 다시 main이 가리키는 그런 원리였다!
branch
란 개발 저장소를 어지럽히지 않고 병렬적으로 개발을 수행할 수 있도록 도와주는 git 만의 작업 공간이다. 따라서 하나의 프로젝트를 여러명이서 개발할 경우에 유리한다. 또한 독립된 환경인 branch
에서 개발이 끝났을 때는 언제든지 다른 branch
와 병합 할 수 있다.
git branch branchName
branch는 git branch 명령어로 생성 가능하다.
git checkout branchName
git switch branchName
branch를 이동하기 위해서 사용하는 명령어들 이다.
git checkout -b branchName
git switch -c branchName
git checkout과 switch 명령어에 각각 -b와 -c(create)를 붙이면 생성과 이동을 동시에 할 수 있다.
bugFix라는 branch를 생성한 예시이다. 이 상황에서 commit을 하게 되면 어떤식으로 나올까?
새로운 노드가 하나 생성되고 bugFix branch가 새로운 노드를 가리키게 된다.
커밋했을때 선택되었던 브랜치가 bugFix 때문에 bugFix 새 커밋 노드를 가리키게 된다. (현재 선택된 branch는 *로 표현한다)
branch를 바꾸고 싶다면 checkout 명령어를 사용하면 된다.
git checkout main //원하는 branch 명을 입력
이런식으로 branch를 여러개 만들면 혼자 프로젝트를 진행하는 경우 ,여러가지 시도를 branch를 만들어서 따로 개발하거나 관리할 수 있어서 편리하고
팀단위로 일을 할 경우에는, 팀원 각자에게 맡은일을 나누어 문제를 해결할수도 있고, 큰 프로젝트를 겹치는 일 없이 정확한 역할분담으로 처리할 수 있다.