Git Flow 브랜치 생성 및 병합
1. 초기 설정
- 새 폴더 생성 및 이동
mkdir git-flow-practice
cd git-flow-practice
- Git 저장소 초기화
git init
- 첫 번째 파일 생성
echo "프로젝트 시작" > project.txt
- 첫 번째 커밋
git add project.txt
git commit -m "Initial commit"
- GitHub에서 새 저장소 생성 (README 파일 생성 옵션 체크 해제)
- 로컬 저장소와 원격 저장소 연결
git remote add origin https://github.com/your-username/git-flow-practice.git
git push -u origin master
2. develop 브랜치 생성 (master에서 분기하여 생성)
- develop 브랜치 생성 및 전환
git checkout -b develop
git pull origin develop # 새로 생성된 브랜치지만, 안전을 위해 pull
- project.txt 파일 수정
echo "개발 브랜치 생성" >> project.txt
- 변경사항 커밋 및 푸시
git add project.txt
git commit -m "develop 브랜치 생성"
git push -u origin develop
3. feature 브랜치 생성 및 작업 (develop에서 분기하여 생성)
- feature 브랜치 생성
git checkout develop
git pull origin develop # develop 브랜치 최신화
git checkout -b feature/login
- project.txt 파일에 기능 추가
echo "로그인 기능 개발" >> project.txt
- 변경사항 커밋
git add project.txt
git commit -m "로그인 기능 추가"
git push -u origin feature/login # feature 브랜치 push 추가
- develop 브랜치로 병합
git checkout develop
git pull origin develop # 병합 전 develop 브랜치 최신화
git merge feature/login
git push origin develop
git add project.txt
git commit -m "feature/login 병합 및 충돌 해결"
git push origin develop
feature 브랜치 삭제
git branch -d feature/login
git push origin --delete feature/login # 원격 feature 브랜치 삭제
4. release 브랜치 생성 (develop에서 분기하여 생성)
- release 브랜치 생성
git checkout develop
git pull origin develop # release 브랜치 생성 전 develop 최신화
git checkout -b release/1.0
- project.txt 파일에 버전 정보 추가
echo "버전 1.0 준비" >> project.txt
- 변경사항 커밋
git add project.txt
git commit -m "1.0 버전 준비"
git push -u origin release/1.0 # release 브랜치 push 추가
5. release 브랜치 병합 및 태그 생성 (develop에서 분기하여 생성)
- master 브랜치로 병합
git checkout master
git pull origin master # master 브랜치 최신화
git merge release/1.0
git push origin master
- 태그 생성 및 푸시
git tag -a v1.0 -m "버전 1.0 출시"
git push origin v1.0
- develop 브랜치로도 병합
git checkout develop
git pull origin develop # develop 브랜치 최신화
git merge release/1.0
git push origin develop
release 브랜치 삭제
git branch -d release/1.0
git push origin --delete release/1.0 # 원격 release 브랜치 삭제
6. hotfix 브랜치 생성 및 작업 (master에서 분기하여 생성)
- hotfix 브랜치 생성
git checkout master
git pull origin master # hotfix 브랜치 생성 전 master 최신화
git checkout -b hotfix/1.0.1
- project.txt 파일에 버그 수정 내용 추가
echo "긴급 버그 수정" >> project.txt
- 변경사항 커밋
git add project.txt
git commit -m "긴급 버그 수정"
git push -u origin hotfix/1.0.1 # hotfix 브랜치 push 추가
- master와 develop 브랜치로 병합
git checkout master
git pull origin master # 병합 전 master 최신화
git merge hotfix/1.0.1
git push origin master
git checkout develop
git pull origin develop # 병합 전 develop 최신화
git merge hotfix/1.0.1
git push origin develop
- 새 태그 생성 및 푸시
git checkout master
git pull origin master # 태그 생성 전 master 최신화
git tag -a v1.0.1 -m "버전 1.0.1 긴급 수정"
git push origin v1.0.1
hotfix 브랜치 삭제
git branch -d hotfix/1.0.1
git push origin --delete hotfix/1.0.1 # 원격 hotfix 브랜치 삭제
push을 안 했더니 원격 저장소에 반영이 안 되어 다음과 같은 그래프가 나타났다.
코드를 바꿔봐도 여전히 다음과 같은 그래프가 나타난다.
왜 그럴까?
병합할 때 fast-forward가 발생해서 그런 것 같다. --no-ff 옵션을 준다면 브랜치 간의 관계가 그래프에서 명확하게 표시될 것이다. 다음과 같이 사용한다.
git checkout master
git merge --no-ff feature
feature, release, hotfix 브랜치를 병합할 때 --no-ff를 사용하면 더욱 명확한 히스토리를 유지할 수 있다.
대신에 --no-ff 옵션을 사용하면 vi 편집기가 열려서 :wq로 종료해야 한다.
'Git' 카테고리의 다른 글
[Git] Git Flow 이해하기 - (5) 간단한 계산기 프로그램을 만들어 적용하기 (0) | 2024.10.31 |
---|---|
[Git] Git Flow 이해하기 - (4) Fast-Forward와 --no-ff 옵션 (0) | 2024.10.24 |
[Git] Git Flow 이해하기 - (2) Git Flow 기본 흐름 (3) | 2024.10.22 |
[Git] Git Flow 이해하기 - (1) 브랜치 (0) | 2024.10.22 |
[책] 만들면서 배우는 Git GitHub 입문 (0) | 2022.12.17 |