🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁
TIL 회고 - [88]일차
🚀88일차에 발생했었던 오류해결과정을 회고하고자한다.
원격저장소 브랜치와 로컬저장소 브랜치의 충돌 해결
⚠️오류원인
기존 원격 저장소의 develop브랜치가 제대로 동작되지 않는 것을 확인
다른 인원이 판단 하에 기존 원격 저장소의 develop브랜치를 제거하고 새로운 develop브랜치를 생성하는 것으로 결정
다른 인원들은 원격 저장소의 develop브랜치에서 작업한 feature/#이슈번호 커밋들을 올리고 있던 상황
이때 원격 저장소의 develop브랜치가 삭제되었으므로 각자 인원들의 로컬저장소에서도 develop브랜치를 삭제한 후
원격 저장소의 develop 브랜치를 받아오면서 최신화시켜야함
⌛진행과정
main 브랜치로 이동 후 forced update 수행됨을 확인
forced update ➡️origin/develop 브랜치가 강제로 덮어쓰기(rebase 또는 강제 푸시) 되었다는 것
즉 이전의 ed98b11 커밋에서 → 새 커밋 b888364로 완전히 바뀌었다는 뜻
(=기존의 커밋 히스토리가 없어지고, 새로운 히스토리로 바뀐것)
branch -D 옵션➡️로컬저장소의 develop브랜치를 먼저 삭제하고
원격저장소의 develop 브랜치를 받아옴과 동시에 체크아웃 진행
⚠️다른 문제 발생
새로 받아온 develop 브랜치에서 feature/#55를 작업한 후 git push를 해봤을때
로컬의 feature/#55 브랜치가 원격의 동일한 브랜치보다 뒤처져 있어서 Git이 푸시를 거부한 상황
원격 브랜치(origin/feature/#55)는 예전 develop 기반에서 만들어져 있음
로컬 feature/#55는 새로운 develop 기반으로 만들어져있으므로
공통된 조상이 없는 두 커밋 히스토리는 병합이 안되는 것 Git이 자동 병합/푸시를 막음
✅해결 방법
원격 브랜치 삭제 후 푸시
(=원격의 feature/#55를 삭제하고 다시 푸시하면 해결)
// 기존 원격작업 브랜치 삭제
git push origin --delete feature/#55
// 새로만든 로컬브랜치 원격저장소에 push
git push --set-upstream origin feature/#55
정리하자면
로컬저장소의 develop브랜치부터 없애고 원격저장소의 새 develop브랜치를 가져왔듯
기존 로컬저장소의 feature/#55 작업 브랜치도 원격저장소에 커밋이 된 사항이 있으므로
원격브랜치를 삭제 후 다시 push해야하는 상황이었던 것이다.
브랜치 전환 불가 경고
⚠️오류원인
다른 브랜치에서 관련없는 파일이 untracking됨에 따라 브랜치 전환을 막고있는 경고
Git이 브랜치를 전환하려고 할 때, 현재 작업 디렉토리에 있는 추적되지 않은(untracked) 파일이
새 브랜치에서 덮어씌워질 수 있다고 판단해서 브랜치 전환을 막고 있는 상황
error: The following untracked working tree files would be overwritten by checkout:
backend/momentreeblog/src/main/resources/application.yml
- application.yml은 untracked 상태 (즉, Git은 관리하지 않음)
- 하지만 main 브랜치로 전환할 때, 그 위치에 동일한 파일이 존재함
- Git은 겹치는 untracked 파일이 사라질 위험이 있다고 판단하여 브랜치 전환을 막음
✅ 해결 방법
1번째방법. 일시적으로 파일 옮기기
1) 해당 파일을 다른 위치(예: 바탕화면이나 temp 폴더 등)으로 복사 또는 이동:
2) git switch main
브랜치 전환
3) 전환 후, 필요하다면 다시 원위치로 파일을 복사하거나 삭제
2번째방법. 파일을 Git이 무시하도록 >> .gitignore + 캐시 제거
# 캐시에서 제거
git rm --cached backend/momentreeblog/src/main/resources/application.yml
# 커밋
git commit -m "chore: remove application.yml from tracking"
# 브랜치 전환 시도
git switch main
✅3번째방법. 브랜치 강제 전환
프론트엔드 브랜치에서 backend와는 관련 없으므로 -f옵션을 통해 브랜치를 강제로 전환하는 방법
f (or -force) 옵션 : 작업 디렉토리의 변경사항이나 추적되지 않은 파일들을 무시하고 강제로 브랜치를 전환하게됨
⚠️Untracked 파일(application.yml)이 사라질 수도 있음
🚀회고 결과 :
회고를 통해 여전히 git 관련 문제를 자주 해결 하고 있다.
원격저장소 브랜치와 로컬저장소 브랜치의 관계에 대해서도 다시 공부해봐야겠다는 생각을 했다.
'Recording > 에러 기록장' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_86일차_"git branch 오류 해결" (0) | 2025.04.15 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_85일차_"블로그 프로젝트 - 빌드 오류 해결" (0) | 2025.04.11 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_84일차_"협업 - 브랜치 및 .idea 충돌 해결과정" (0) | 2025.04.11 |
[Spring Data JPA] RESTful API 에서 "특정 사용자 조회" 오류 해결 (0) | 2025.02.21 |
[Spring Data JPA] 여러 관계가 매핑된 엔티티의 toString() 메소드 출력 오류 (0) | 2025.02.21 |