협업을 진행하다보면, 특히 기능개발할때 브랜치를 나눠서 작업을 하게된다.
이때 메인브랜치의 변경사항을 현재 브랜치에 적용하고 싶긴하지만, 현재 브랜치의 변경사항으로 덮어쓰고 싶을 때 어떻게 할까?
0. 작업용 브랜치 생성 및 이동
# 메인 브랜치 최신 상태로 만들기
git checkout [메인 브랜치]
git fetch origin [메인 브랜치]
git pull origin [메인 브랜치]
# 작업 브랜치 생성 및 이동
git checkout -b [작업 브랜치]
e.g.
git checkout -b feat/feature-name
1. 현재 브랜치 확인
# 현재 브랜치 확인 (메인: dev, 작업중인 브랜치: feat)
git branch
dev
* feat
# 만약 현재 작업중인 브랜치가 아니라면 변경해준다.
git checkout [작업중인 브랜치 명]
2. 메인 브랜치 가져오기
# 현재 메인 브랜치의 변경사항을 가져온다.
git fetch origin dev
3. 작업중인 브랜치(*feat)의 변경사항을 메인 브랜치 위에 덮어쓴다.
# 충돌 파일에서 feat 변경사항이 항상 우선으로 적용되도록 merge
git merge -X ours origin/dev
자동 병합: src/main/java/com/example/moyeorak/service/EnrollmentService.java
Merge made by the 'ort' strategy.
src/main/java/com/example/moyeorak/config/SecurityConfig.java | 12 +++++++++++-
src/main/java/com/example/moyeorak/controller/UserController.java | 59 +++++++++++++++++++++++++++++++++++------------------------
src/main/java/com/example/moyeorak/dto/EnrollmentRequest.java | 15 +++------------
src/main/java/com/example/moyeorak/dto/EnrollmentResponse.java | 4 +++-
src/main/java/com/example/moyeorak/service/EnrollmentService.java | 25 +++----------------------
src/main/java/com/example/moyeorak/service/ProgramService.java | 25 ++++++++++++++++++++-----
src/main/java/com/example/moyeorak/service/UserService.java | 42 ++++++++++++++++++++++++------------------
7 files changed, 99 insertions(+), 83 deletions(-)
# 작업중인 브랜치의 변경사항 적용
git pull origin [작업중인 브랜치]
4. 메인 브랜치의 커밋 내역 위에 작업 브랜치의 커밋이 쌓여있는지 확인한다.
git log --oneline --graph --decorate --all
* 2611a2d (HEAD -> feat) Merge remote-tracking branch 'origin/dev' into feat feat 브랜치 -> 최신 dev 업데이트
|\
| * 9547725 (origin/fix/token-unauthorized-error-9, origin/dev, origin/HEAD) fix: 인증 실패 시 401 오류로 통일 처리 (refs #이슈번호)
| * 94ef762 (origin/fix/refresh-token-reissue-8) fix: refresh token 재발급 오류 수정 (refs #8)
5. 기능 개발 종료 후, 메인 브랜치로 Merge 한다.
# 메인 브랜치로 체크아웃
git checkout [메인브랜치]
# 최신 변경사항 가져오기
git fetch origin [메인브랜치]
git pull origin [메인브랜치]
# 작업한 브랜치를 메인 브랜치로 Merge
git merge [작업한 브랜치]
# 원격 메인 브랜치에 푸시
git push origin [메인브랜치]
6. 작업한 브랜치 삭제
# 로컬 브랜치 삭제
git branch -d [작업한 브랜치]
# 원격 브랜치 삭제
git push origin --delete [작업한 브랜치]