들어가기 앞서..
해당 포스팅은 썸머워즈 님의 포스팅을 참고해서 진행했습니다.
*참고: [GIT] 깃(Git) 브랜치(Branch) 사용하기 (ft. 조회/생성/이동/삭제/병합) (tistory.com)
제가 이해한 대로 정리한 거라 틀린 게 있다면 댓글로 피드백 부탁드립니다. :)
목차
우선 git 명령어를 수행하기에 앞서, git 명령어를 사용할 수 있는 디렉토리로 이동해야 된다.
git clone
한 프로젝트(.git이 있는 폴더)를 C 아래에 두었기 때문에, git bash를 실행한 다음 해당 위치로 이동한다.
■ git branch: 현재 브랜치 조회하기
git branch
명령어를 통해 로컬에서 현재 브랜치의 위치를 확인할 수 있다. 별도의 브랜치를 관리하지 않은 사용자라면 main 또는 master만 보이며 해당 이름 옆에 *(Asterick)가 표시되어져 있다. * 표시가 있는 브랜치가 로컬에서의 현재 브랜치다.
git branch -a
명령어를 사용하면, 로컬과 원격저장소의 모든 브랜치가 나온다.
다른 명령어가 궁금하면 git branch -h
를 실행하면 된다.
■ git branch [브랜치명]: 브랜치 생성하기
git branch [브랜치명]
을 이용하면, 브랜치를 만들 수 있다. 소스를 수정한 버전을 따로 관리하기 위해 patch202409-1.0이라는 이름의 브랜치를 만든다.
■ git switch: 브랜치 이동하기
새로 만든 브랜치에서 소스를 관리하기 위해 git switch [브랜치명]
명령어를 통해 브랜치의 위치를 이동시킨다. git branch -a
를 실행시키면 현재 위치가 main에서 patch202409-1.0로 이동한 것을 알 수 있다.
■ (개념설명) HEAD란?
git log -1
명령어는 가장 최신 1건의 깃 로그를 보여주는 명령어다. 해당 명령어를 통해 브랜치가 HEAD에 붙은 것을 확인할 수 있다.
헤드는, 깃에서 체크아웃된 브랜치를 가리키는 일종의 포인터다. (체크아웃됐다는 말은, 소스를 수정해서 원격 저장소에 커밋할 수 있는 상태를 의미한다.) 이전까지 브랜치를 생성하지 않았기 때문에 최상위 브랜치인 main 브랜치에서 소스를 수정하고 커밋했을 것이다. 따라서 지금까지 HEAD는 main을 가리키고 있었다.
하지만, 위에서 patch202409-1.0 브랜치를 생성했고 해당 브랜치로 switch(이동)했다. 그렇기 때문에 patch202409-1.0 브랜치에서 소스를 수정, 커밋할 수 있게 되면서 HEAD는 이 브랜치를 가리키는 상태가 되었다.
■ git branch [브랜치명] [커밋해시값]: 특정 커밋에서 브랜치 생성하기
만약, 다른 커밋 지점에서 브랜치를 분기하고 싶다면, git branch [브랜치명] [커밋해시값]
명령어를 사용하면 된다. 아래 그림과 같이, 해당 커밋 위치에서 브렌치가 생성될 것이다.
patch00 브랜치에서 소스를 수정하고 싶다면, 해당 브랜치를 HEAD로 가리키면 된다. HEAD로 가리키기 위해선 git switch 명령어를 이용하면 된다.
■ git branch -d [브랜치명]: 브랜치 삭제하기
-d 또는 -D 옵션을 이용해서 브랜치를 삭제할 수 있다. 두 옵션의 차이는 다음과 같다.
- -d: 오류가 발생할 경우 삭제 진행 중단
- -D: 오류를 무시하고 삭제 진행
아래처럼 -D 옵션은 시스템 오류까지 무시할 수는 없지만 불상사를 피하기 위해 -d 사용을 권장한다.
앞서 확인한 것처럼, 현재 브랜치를 삭제하기 위해선 브랜치를 이동하는 게 선행되어야 한다. 그 후, git branch -d 명령어를 통해 브랜치 삭제를 진행하면 된다.
■ git merge 또는 git rebase: 브랜치 병합하기
병합은 다음에 필요할 때 다시 포스팅할 예정이다.
감사합니다. :)