IT STUDY LOG
[Git과 버전 관리 시스템] 03. Git Branch 본문
# 학습 목표
- Git의 환경설정을 할 수 있다.
- 버전 관리 시스템의 필요성을 이해할 수 있다.
- Github과 Git의 관계에 대해 이해할 수 있다.
- Repository에 대해 이해할 수 있다.
- Local Repository와 Remote Repository의 차이를 이해할 수 있다.
# 학습 내용
1. Git Branch
- 브랜치란?
- 개요
- 독립적으로 어떤 작업을 진행하기 위한 개념
- 장점
- 한 소스코드에서 동시에 다양한 작업 가능
- 소스코드의 한 시점과 동일한 상태를 만들고, 브랜치를 넘나들며 작업을 수행 가능
- 각각의 브랜치에서 생긴 변화가 다른 브랜치에 영향을 주지 않고 독립적으로 코딩을 진행 가능
- 각자의 브랜치에서 맡은 영역에 대한 작업을 진행한 후, 작업이 끝난 브랜치는 통합 브랜치에 병합해서 변경 사항을 적용
- '작업 단위', 즉 브랜치로 그 작업의 내용들이 모두 기록되기 때문에 문제가 발생했을 때 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워짐
- 개요
- 브랜치 종류
- 통합 브랜치 (Integration Branch) : 배포될 소스 코드가 기록되는 브랜치 (ex) main, master
- 피처 브랜치 (Feature Branch) : 기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치로 통합 브랜치로부터 만들어지며 피처 브랜치에서 하나의 작업이 완료가 되면 통합 브랜치에 합하는 방식으로 진행브
- 브랜치 전략 참고 레퍼런스 : https://hellowoori.tistory.com/56
2. 브랜치 명령어 모음
내용 | 명령 |
새로운 브랜치 생성 | $ git branch 새로운 브랜치 이름 |
새로운 브랜치 생성 후 해당 브랜치로 전환 | $ git switch -c 새로운 브랜치 이름 $ git checkout -b 새로운 브랜치 이름 |
브랜치 목록 확인 | $ git branch |
브랜치 목록과 각 브랜치의 최근 커밋 확인 | $ git branch -v |
브랜치 삭제 | $ git branch -d 삭제할 브랜치 이름 $ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법입니다. |
브랜치 전환 | $ git switch 브랜치 이름 $ git checkout 브랜치 이름 |
브랜치 병합 | master 브랜치로 dev 브랜치를 병합할 때 (master ← dev) $ git checkout master $ git merge dev |
로그에 모든 브랜치를 그래프로 표현 | $ git log --branches --graph --decorate |
아직 commit 하지 않은 작업을 스택에 임시로 저장 | $ git stash |
3. 프로젝트 workflow
- fork, clone
- remote에 생성한 프로젝트 repository를 각자의 repository로 가져오기
- gir checkout -b / git witch -c
- 브랜치를 생성하고 새로운 브랜치로 이동하기
- HEAD는 현재 위치의 커밋
- Remote Repository 에도 생성한 브랜치를 반영하기 위해서는 git push origin dev 명령어를 입력
- git branch
- 생성한 브랜치 목록 및 현재 위치한 브랜치 확인하기
- 여러 브랜치 생성하기
- git checkout / switch 이동할 브랜치 이름
- merge를 하기 위해서는 병합이 될 브랜치로 이동해야함 (예) feat/login-oauth를 feat/login으로 병합하기 위해서는 feat/login으로 이동해야 함
- gir merge 병합할 브랜치 이름
- 브랜치 병합 방식
- fast-forward 방식 : 별도 커밋 생성하지 않고 병합될 브랜치가 가리키는 커밋을 병합할 브랜치가 생성한 커밋으로 변경하는 것
- merge commit 방식 : 브랜치가 줄기처럼 분기한 후 병합하는 모양
- feature/login-oauth 브랜치가 머지되기 전 feature/login 브랜치에 추가적인 커밋이 없으므로, 브랜치가 분기될 필요가 없으므로 자동적으로 fast-forward 방식으로 병합이 이뤄짐
- merge commit 방식
- 브랜치 병합 방식
- rebase vs merge
-
rebase (=fast-forward) merge(=merge commit) - branch base를 이동시킨다는 뜻
-머지처럼 브랜치 통합을 목적으로 하지만, 특정 시점으로 브랜치가 가리키는 곳을 변경하는 기능- 변경 내용의 이력이 모두 그대로 남아 있기 때문에 이력이 복잡해
-
- git push origin 브랜치명
- remote repository로 해당 브랜치를 업로드
- pull request
- 내가 push한 변경 사항에 대해 다른 사람들에게 알려 코드 리뷰하고 브랜치로의 반영 요청
- 전체 흐름 workflow
출처 : 코드스테이츠 devops 부트캠프 과정
'devops bootcamp 4 > 개발 및 배포' 카테고리의 다른 글
[(사전준비) 개발 환경 구축] 02. Docker 설치 (0) | 2023.03.22 |
---|---|
[(사전준비) 개발 환경 구축] 01. Node.js 설치 (0) | 2023.03.22 |
[Git과 버전 관리 시스템] 02. Git (0) | 2023.03.20 |
[Git과 버전 관리 시스템] 01. 개발자 도구 Git 설치 (0) | 2023.03.20 |
[웹서비스 개발 기초] 04. HTTP 요청 실습 (Postman) (0) | 2023.03.17 |
Comments