티스토리 뷰
swift에서 merge 오류 해결 방법에 대해 알아보도록 하자.
이번에 프로젝트를 진행하게 되면서 충돌이 밥 먹듯이 일어나다 보니 충돌 해결하는 건 거의 기본이 되었다.
일단 프로젝트에서 아래와 같이 branch를 나눠서 개발했다.
- main: 배포 가능한 상태의 코드만을 관리
- dev: 개발 전용 branch, 기능 개발이 완료된 branch를 병합
- 이슈 기반 branch: 기능, 리팩토링, 버그 등을 관리
난 이슈 기반 branch에서 작업을 한 후, dev와 병합을 해야 하는 상황이었다. 근데 여기서 충돌이 일어나는 거~~~~~
해결 방법에 대해 알아보자.
1️⃣ git pull
일단 dev와 병합을 해야하니 dev branch의 코드들을 pull 해온다.
그럼 아래와 같이 여러 충돌들이 남발할 것이다.
2️⃣ 충돌 해결
🟡 .xcodeproj 충돌
위에서와 같이 .xcodeproj 파일에 오류가 난 것을 확인할 수 있다.
이 파일 오류가 나면 xcode에서 프로젝트도 열리지가 않는다~~
즉, 이 파일에 오류가 났으니 개발자가 직접 수정을 하라는 뜻이다 ㅎㅎ
충돌 (내용) : pennyway-client-iOS/pennyway-client-iOS.xcodeproj/project.pbxproj
충돌 해결하기 위해 .xcodeproj을 우클릭하면 "패키지 내용 보기"가 나오는데 그걸 클릭한다.
그럼 이렇게 project.pbxproj라는 파일이 있는데 이걸 클릭하면 코드가 쭉 나와있을 것이다.
코드 확인 해보면 아래와 같은 형식의 코드를 확인할 수 있다.
위의 코드는 아래와 같은 형식이다.
<<<<<<<HEAD
지금 branch가 가지고 있던 코드들
=======
dev branch가 가지고 있던 코드들
>>>>>>> dev branch
즉, dev와 내 branch의 변경된 부분을 잘 확인하고 필요한 코드만 남겨야 한다. 물론 <<<< ==== >>>> 이 문구를 다 제거해줘야 한다.
모든 과정을 거치고 프로젝트를 다시 실행해보면 잘 실행된다 ㅎ
🟡 .xcuserstate 충돌
위에는 없는 오류지만 .xcuserstate 충돌이 자주 일어나 정리해보려고 한다.
xcode 사용할 때 .xcuserstate 파일이 변경되어 git 충돌이 발생하는데 이를 막으려고 .gitignore 파일에 해당 파일을 등록했다.
근데 그래도 오류가 가끔씩 발생하는 거~~~
이런 경우에 git의 캐시가 문제가 되는 거라서 아래 명령어로 캐시 내용을 전부 삭제하면 된다고 한다.
git rm -r --cached .
🟡 .swift 충돌
.swift 파일 충돌은 프로젝트 실행해서 파일을 수정해도 되고, 직접 파일 하나씩 들어가서 수정해도 된다.
근데 가끔씩 충돌 일어나면 프로젝트 실행 안 될 때가 있어서 그럴 때는 직접 파일 찾아서 수정해야 한다.
이 파일도 충돌 일어나면 아래와 같은 포맷이다. dev랑 비교해서 수정할 부분 수정하면 된다.
<<<<<<<HEAD
지금 branch가 가지고 있던 코드들
=======
dev branch가 가지고 있던 코드들
>>>>>>> dev branch
3️⃣ merge
충돌이 일어난 파일 모두 수정했다면 다시 commit하고 push 한다.
pr 승인만 한다면 dev와 더이상 충돌이 일어나지 않고 merge가 잘 되는 걸 확인할 수 있다.
'스위프트' 카테고리의 다른 글
[Swift] - iOS 앱의 Life Cycle (0) | 2024.04.03 |
---|---|
[Swift] - 옵셔널 (0) | 2024.03.26 |
[Swift] - Could not build Objective-C module 'Accessibility' 오류 (1) | 2024.02.26 |
[Swift] - 서브스크립트(Subscript) (2) | 2023.12.30 |
[Swift] - MVVM 패턴 (0) | 2023.12.27 |