1. 문제 발생❓
원격 dev 브랜치에서 로컬 개인 브랜치 feat/mypage로 pull을 시도했을 때, 다음과 같은 문제가 발생했습니다.
- 충돌이 발생하면서 rebase가 자동으로 시작됨.
- rebase 과정에서 기존에 작업 했던 footer 컴포넌트가 사라짐.
- 브랜치 상태가 ''no branch, rebasing feat/mypage"로 변경됨.
- git config --global pull.rebase false 설정으로 문제 해결을 시도했으나 실패
2. 원인 추론 🔎
- Git 설정 문제: pull.rebase 설정이 true로 되어 있어 pull 시 자동으로 rebase가 실행되었을 가능성이 높아보입니다.
- 로컬 브랜치와 원격 브랜치 사이에 많은 차이가 있어 충돌이 발생했을 수 있습니다.
- git add . 했다가 다른거 수정했다가 다시 git add . 또 했다가 git commit 했다가 상황이 꼬여서 복잡한 병합 상황이 만들어졌을 수 있습니다.
3. 해결 과정 📋
- VS Code의 소스 제어 탭에서 변경사항 되돌리기 버튼을 사용하여 rebase 이전 상태로 복구
- no branch -> feat/mypage 브랜치로 전환
- 다시 로컬 dev 브랜치로 전환
- 원격 dev 브랜치를 로컬 dev 브랜치로 pull 받음
- 다시 내 로컬 개인 브랜치인 feat/mypage로 전환
- 로컬 dev 브랜치의 데이터를 개인 브랜치 feat/mypage로 머지함 (명령어: git merge feat/mypage)
- 머지 성공함 !!
3-1. rebase 이해하기
rebase는 Git에서 브랜치 기준(base)을 변경하는 작업입니다.
- 장점: 커밋 히스토리를 깔끔하게 정리할 수 있습니다.
- 단점: 공유 브랜치에서 사용 시 히스토리 충돌 문제 발생이 가능합니다.
주의사항
- 개인 브랜치에서만 사용하는 것이 안전합니다.
- 공유 브랜치에서는 merge를 사용하는 것이 좋습니다.
- rebase 후 강제 푸쉬(force push)가 필요할 수 있어 위험성이 증가합니다.
3-2. git config --global pull.rebase false 설정 이해하기
이 설정은 git pull 명령 실행 시 rebase 대신 mergy를 사용하도록 지정하는 명령어입니다.
- 기본값: false (merge 사용)
- true로 설정: pull 시 자동으로 rebase 실행
- false로 설정: pull 시 merge 사용 (더 안전한 옵션 ⭐⭐⭐⭐⭐)
4. 결과 ❤🔥
기존에 작업했던 footer를 날리는 일 없이 dev와 머지에 성공할 수 있었습니다!
5. 안전한 Git 사용을 위한 꿀팁 🍯
- 중요한 변경 전 항상 브랜치 생성해야 합니다.
- 공유 브랜치에서는(dev와 같은) rebase 대신 merge 사용해야 합니다.
- 원격 브랜치에서 로컬 브랜치로 pull 받아오는 것은 위험 요소가 많음으로 위의 방법과 같이 dev를 로컬로 먼저 pull 받아오고 내 브랜치에서 mergy 하는 것이 더욱 안전합니다!! 이왕이면 머지하기 전에 개인 원격 브랜치에 미리 push 해두는 것이 좋습니다. push를 해두면 내 브랜치에서 머지할 때 만약 돌이킬 수 없는 문제가 발생했다면, 작업을 취소하고 기존 내 브랜치에서 다시 pull 받아오면 됩니다!
- 습관적으로 git branch 확인과 git status 확인이 필수인 것 같습니다.
'팀프로젝트' 카테고리의 다른 글
집 플래닛 팀프로젝트! (2) | 2024.10.16 |
---|---|
Git 트러블슈팅: Git 저장소에 실수로 올려버린 키 제거 과정🌟 (0) | 2024.10.15 |
아웃소싱 팀프로젝트(Park FInder) 최종 발표 (1) | 2024.09.23 |
아웃소싱 팀프로젝(트러블 슈팅1🌟) (0) | 2024.09.19 |
맛집 뉴스피드 프로젝트 마무리 및 KPT회고 (10) | 2024.09.04 |