git 커리큘럼 중에서 가장 배우고 싶었던 것이 branch를 어떻게 협업에 활용하는지랑 충돌을 해결하는 방법이었는데 가장 도움이 됐던 수업이었다. 브랜치 개념을 명확하게 이해할 수 있었다.
깃 브랜치 이름 규칙
메인 브랜치 v1.2.0
- 기능 개발 : feature/login, feature/select-product
- 출시 준비 : relrease-1.3, relrease-1.4
- 긴급 수정 : hotfix-1.2.1
깃 브랜치 규칙에 따라 만들기
- git branch feature/login
- git branch feature/select-product
- git branch -d dev : dev 브랜치 삭제

병렬 개발 확인
- 커밋해야 그때부터 브랜치
- 커밋 전까진 포인트가 안 움직임
- 커밋 전에 현재 해당 브랜치에 위치하고 있는지 한번 더 확인한다.
- VS code 같은 경우 좌측 하단에 브랜치 확인 가능
- commit은 롤백이 불가능하므로 주의 필요


원격 브랜치 실습
깃허브에 브랜치 옮기는 법
- 깃허브에 있는 브랜치 조회
- git branch -r
- 깃허브에 브랜치 생성하고, 깃 브랜치 복제
- git push 깃허브저장소별칭 깃브랜치명 : git push origin feature/login

깃 브랜치 전략
깃 플로우라고도 부른다. 전략은 다양하게 짤 수 있다
- fast forward
- 3-way
1) fast-worward 전략
A branch(main)에서 B branch(feature/login)를 생성한 시점부터
- A branch에서 아무런 추가 구현을 하지 않고
- B branch만 추가 구현한 뒤
B branch와 A branch를 합치면, A branch에 그냥 B branch가 붙으면 끝남
-> 자주 쓰이는 편 아님

2) 3-way 전략
일반적으로 가장 많이 사용하는 전략
A branch(main)에서 B branch(feature/login)를 생성한 시점부터,
- A branch도 추가 구현을 하고
- B branch도 추가 구현을 하고
B branch와 A branch를 합치면, A branch와 B branch가 서로 비교하여 바뀐 것을 정리하여 합치는 전략

병합과 충돌 - pull request & merge
- Pull Request
<깃허브 공간>
- compare & pull request

- pr(pull request) 던지기
- feature/login으로 이동
- contributes > open pull request
- write 내용 적는 팁
- 뭐 구현했는지 적기 : markdown 적용 가능
- 주요구현내용 : 로그인 / 계정정보 / 비밀번호 알고리즘...
- 이슈 : 알고리즘 구현 시, A에러가 있어 B알고리즘으로 대체
- write 내용 적는 팁






※ pr 하기 전 권고사항
- 깃허브 main branch 이동
- protect this branch
- branch protection rule
- require a pull request before merging
- password 입력 confirm
<이슈>
강의에선 main branch 이동 시 protect this branch 알림 문구가 떴으나 나는 뜨지 않아서 직접 경로 이동해서 들어갔다.


개념정리
- 병합이란
- 브랜치 생성은 협업을 위한 것
- 브랜치 병합(추가 가지 -> base 가지)을 깃허브에서 함
- Pull Request 전에 main 브랜치 보호가 요구된다.
- Pull Request : 추가 브랜치 -> main 브랜치 병합 시켜줘
- 깃허브가 충돌 자동으로 확인
- PR 메세지 중요
- merge한다.
- merge를 commit한다.
- branch를 삭제한다.
merge된 깃허브 -> 깃에 동기화
터미널에서 확인했을 때 삭제한 브랜치가 깃허브에 살아있음
- git pull origin feature/login
- 없다고 나옴
- 동기화 필요 : git fetch -p
- 깃허브의 브랜치를 동기화하는 명령어
- 깃허브 branch 조회 : git branch -r
- 깃헙에서 사라진 것 확인 가능

- 로컬에서 브랜치 삭제
- main으로 이동 : git checkout main
- 브랜치 삭제 : git branch -d feature/login
- 머지 안됐다고 나옴
- 메인도 동기화 필요 : git pull origin main
- git log 찍어보면 머지 커밋 찍혀 있음
- 브랜치 삭제 : git branch -d feature/login


정리
- git fetch -p : 깃허브 브랜치 목록 동기화
- 로컬 브랜치 삭제
- git checkout main : 메인 이동
- git pull origin main : 메인 동기화
- git branch -d feature/login : 브랜치 삭제
충돌 해결하기
feature/1과 feature/2 따로 개발해서 머지해보기
깃허브
- 깃허브에서 브랜치 생성
- feature/1 브랜치 생성
- feature/2 브랜치 생성

feature/1
- main 브랜치 하나 남기기
- 깃허브 브랜치 동기화 : git fetch -p
- 깃허브 브랜치 조회 : git branch -r
- 깃허브 브랜치를 로컬에 연결 : git checkout -t origin/feature/1
- test.txt 변경 : feature1
- git add
- git commit : feature1 commit
- git push
- 깃허브 확인

feature/2
- main 브랜치 하나 남기기
- 깃 동기화 : git pull origin main
- 깃허브 브랜치 동기화 : git fetch -p
- 깃허브 브랜치 조회 : git branch -r
- 깃허브 브랜치를 로컬에 연결 : git checkout -t origin/feature/2
- test.txt 변경 : feature2
- git add
- git commit : feature2 commit
- git push
- 깃허브 확인

좌우 푸시 후 깃허브 pull request
- feature1부터 진행
- merge > confirm >delete branch



- feature2 pull request 요청
- 자동 머지 못함
- 충돌 일어남 > resolve conflict

- feature2 살리기로 결정 > 지우기
- Mark as resolved 클릭
- Commit Merge


- merge pull request
- delete branch


로컬 feature/1과 feature/2
<깃허브 머지 후>
- 깃허브 브랜치 동기화 : git fetch -p
- main으로 이동 : git checkout main
- main 동기화 : git pull origin main
- 기능 branch 삭제 : git branch -d feature/1 & git branch -d feature/2
>>학습 외 활동<<
깃허브 브랜치 삭제


'개발지식 > git' 카테고리의 다른 글
| 0901 포트폴리오 / 협업 환경 구성 (3) - 깃허브 레포지토리 생성, 브랜치 실습 (2) | 2025.09.01 |
|---|---|
| 0829 포트폴리오 / 협업 환경 구성 (2) - git 명령어 (3) | 2025.08.29 |
| 0828 포트폴리오 / 협업 환경 구성(1) - 리드미, 버전관리 (2) | 2025.08.28 |