[Git] CLI로 브랜치 생성하기
2022. 4. 22. 12:55ㆍGit
1. branch 되돌아보기
- 커밋을 수행하면 커밋 객체가 생성됩니다. 커밋 객체에는 부모 커밋에 대한 참조와 실제 커밋을 구성하는 파일 객체가 들어 있습니다.
- 브랜치는 논리적으로는 어떤 커밋과 그 조상들을 묶어서 뜻하지만, 사실은 단순히 커밋 객체 하나를 가리킬 뿐입니다.
브랜치의 사용 시기
사용 시기 | 설명 |
새로운 기능 추가 | 가장 대표적으로 브랜치를 사용하는 경우입니다. [main] 브랜치에는 정상적으로 동작하는 안정적인 버전의 프로젝트가 저장되어 있기 때문에 새로운 기능을 추가할 때는 [main] 브랜치의 최신 커밋으로부터 브랜치를 생성해서 개발합니다. 이때는 개발, 코드 리뷰, 테스트까지 모두 완료해서 이상이 없으면 [main] 브랜치로 병합합니다. |
버그 수정 | 오류와 버그는 놀랍지 않게도 항상 발생합니다. 버그가 발생하면 [main] 브랜치로부터 새로운 브랜치를 생성해서 작업합니다. 이때 브랜치 이름은 hotfix, bugfix 같은 이름을 사용합니다. 버그 수정이 끝나면 당연히 [main] 브랜치로 병합합니다. 이 경우, 이후에 새로 개발한 내용을 다시 [main] 브랜치에 병합할 때 버그 수정으로 인해 충돌이 생길 수 있기 때문에 주의해야 합니다. |
병합과 리베이스 테스트 | 병합이나 리베이스는 입문자에게 가장 까다로운 일 중에 하나입니다. 물론 reset 명령을 이용해서 언제든지 취소할 수 있지만 그조차도 어려울 수 있습니다. 이럴때 임시 브랜치를 만들어서 병합과 리베이스를 테스트를 해보면 상당히 편리합니다. 잘못되었을 경우 그냥 브랜치를 삭제해 버리면 됩니다. |
이전 코드 개선 | 이미 기능 구현은 완료되었는데, 코드가 마음에 들잊 않아서 함수의 로직 등을 개선하고 싶을때 사용합니다. 많은 사람이 이런 상황에 기존 코드를 주석 처리하고, 그 아래에 새로운 개선 코드를 작성하는데, 이 방법보다 브랜치 사용을 추천합니다. 새로 브랜치를 만들어 이전 코드는 과감하게 삭제하고 새 코드를 작성합니다. 다른 브랜치의 이전 커밋에는 잘 돌아가는 코드가 여전히 남아있기 때문에 부담이 없습니다. |
특정 커밋으로 돌아가고 싶을때 | 이미 저장되어 있는 특정 커밋으로 돌아가고 싶을 때 일반적으로 hard reset이나 revert를 사용합니다. 그런데 효과적인 방법으로 브랜치를 생성하는 방법이 있습니다. hard reset의 경우 커밋이 없어질 수 있기 때문에 추천하지 않고, revert는 사용이 조금 까다롭습니다. 이 경우 브랜치를 새로 만들어서 작업을 하고, 이후 리베이스나 병합을 사용하는 것이 좋습니다. |
2. branch 생성하기
명령어 구성 | 설명 |
git branch [-v] | 로컬 저장소의 브랜치 목록을 보여주는 명령어 -v 옵션 사용시 마지막 커밋도 함께 표시됨 표시된 브랜치 중에서 이름 왼쪽에 *가 붙어 있으면 HEAD 브브랜치 |
git branch [-f] <브랜치이름> [커밋체크섬] | 새로운 브랜치를 생성함 커밋체크섬을 주지 않으면 HEAD 브랜치로부터 브랜치 생성 이미 존재하는 브랜치를 다른 커밋으로 옮기고 싶을때는 -f 옵션 사용 |
git branch -r[v] | 원격 저장소에 있는 브랜치를 보고 싶을 때 사용함 -v 옵션을 사용하여 커밋 요약을 볼 수 있음 |
git checkout <브랜치이름> | 특정 브랜치로 이동할때 사용됨 브랜치 이름 대신 커밋체크섬을 사용할 수 있음 하지만 브랜치 이름을 사용하는 것을 권장함 |
git checkout -b <브랜치이름> <커밋 체크섬> | 특정 커밋에서 브랜치를 새로 생성하고 동시에 해당 브랜치로 이동함 두 명령을 하나로 합친 것이기 때문에 간결함 |
git merge <대상 브랜치> | 현재 브랜치와 대상 브랜치를 병합할때 사용함 병합 커밋이 새로 생기는 경우가 많음 |
git rebase <대상 브랜치> | 내 브랜치의 커밋들을 대상 브랜치에 재배치시킴 히스토리가 깔끔해져서 자주 사용하지만 조심해야함 |
git branch -d <브랜치 이름> | 특정 브랜치 삭제 HEAD 브랜치나 병합이 되지 않은 브랜치는 삭제할 수 없음 |
git branch -D <브랜치이름> | 브랜치 강제 삭제 -d로 삭제할 수 없는 브랜치를 삭제하고 싶을때 사용함 |
브랜치 만들기
(main) $ git branch # 현재 브랜치 확인
(main) $ git branch feat/c # 새로운 브랜치 생성
(main) $ git branch # 현재 브랜치 확인
(main) $ git log --oneline -all # 변경된 브랜치 확인
HEAD에 대해 기억할점
- HEAD는 현재 작업중인 브랜치를 가리킴
- 브랜치는 커밋을 가리키므로 HEAD도 커밋을 가리킴
- 결국 HEAD는 현재 작업중인 브랜치의 최근 커밋을 가리킴
References
source code : https://github.com/yonghwankim-dev/git_study
팀 개발을 위한 Git Github 시작하기, 정호영 진유림 저
'Git' 카테고리의 다른 글
[Git] CLI로 3-way 병합하기 (0) | 2022.04.22 |
---|---|
[Git] CLI로 checkout 하기 (0) | 2022.04.22 |
[Git] 원격저장소 관련 CLI 명령어 (0) | 2022.04.22 |
[Git] Git 기본 CLI 명령어 (0) | 2022.04.22 |
[Git] Git Bash 명령어 (0) | 2022.04.22 |