Branch
여러 개발자가 동시에 서로 다른 작업을 할 수 있게 만들어 주는 기능
브랜치 장점
분리된 작업 영역(브랜치)에서 변경된 내용들은 다른 브랜치와 병합(Merge)함으로써 다시 새로운 하나의 브랜치로 모을 수 있다.
브랜치를 사용하여 동시에 여러 작업을 진행할 때의 작업 흐름을 한눈에 파악할 수 있다.
여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 통합 브랜치에서 자신의 작업 전용 브랜치를 만든다.
그리고 각자의 브랜치에서 맡은 영역에 대한 작업을 진행한 후, 작업이 끝난 브랜치는 통합 브랜치에 병합해서 변경 사항을 적용한다. 이를 통해 다른 브랜치의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행하고 그 결과를 하나로 모아 나가게 된다. 이렇게 작업을 진행하게 되면 '작업 단위', 즉 브랜치로 그 작업의 내용들이 모두 기록되기 때문에 문제가 발생했을 때 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.
브랜치 종류
브랜치 명령어
새로운 브랜치 생성
git branch 새로운 브랜치 이름
새로운 브랜치 생성 후 해당 브랜치로 전환
git switch -c 새로운 브랜치 이름
git checkout -b 새로운 브랜치 이름
브랜치 목록 확인
git branch
브랜치 목록과 각 브랜치의 최근 커밋 확인
git branch -v
브랜치 삭제
git branch -d 삭제할 브랜치 이름
git branch -D
해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법브랜치 전환
git switch 브랜치 이름
git checkout 브랜치 이름
브랜치 병합
git checkout master
git merge dev
로그에 모든 브랜치를 그래프로 표현
git log --branches --graph --decorate
아직 commit 하지 않은 작업을 스택에 임시로 저장
git stash
프로젝트 Workflow
Fork, Clone
Remote에 생성한 프로젝트 Repository를 각자의 Repository로 가져오기
브랜치 생성 후 브랜치로 이동
git checkout -b 새로운 브랜치 이름
git switch -c 새로운 브랜치 이름
여기서 HEAD는 현재 위치의 커밋을 가리킨다(현재 작업중인 커밋).
브랜치 확인
git branch
기능 추가 브랜치 생성
git checkout -b feature/새로운 기능
git switch -c feature/새로운 기능
Merge
git chekout(switch) feature
feature 브랜치로 이동
git merge feature/새로운 기능
feature 브랜치로 feature/새로운 기능 브랜치 병합(fast-forwad 방식)
*fast-forward란 별도의 커밋을 생성하지 않고 feature브랜치가 가리키는 커밋을 feature/새로운 기능 브랜치가 생성한 커밋으로 바꾸는 작업
git merge commit feature/새로운 기능
feature 브랜치에 별도의 커밋이 있을 경우 merge commit방식으로 병합
Push
git push origin feature
로컬의 작업 내용을 Remote Repository에 업로드(push)
Pull Request
feature 브랜치의 변경 사항을 팀원들과 리뷰 후 merge하고 싶은 경우 Github의 Rull Request기능을 활용해 반영을 요청(리뷰 후 브라우저에서도 merge 가능)
PR 메세지를 입력후 Create pull request
버튼 클릭
Git Workflow 개요
기타 명령어
rebase
: 커밋의 베이스를 다시 정하고 싶은 경우squash
: 여러 개의 커밋 로그를 하나로 묶고 싶은 경우revert
: 커밋 여러 개의 변경 사항을 취소하고 싶은 경우—amend
: 최근 커밋 메시지를 수정하고 싶은 경우