dev._.note

[Git] Xcode pbxproj merge conflict 문제 해결 방법 본문

Dev/ERROR

[Git] Xcode pbxproj merge conflict 문제 해결 방법

Laena 2023. 12. 29. 21:39

pbxproj 파일은 Build Setting(실제 프로젝트의 설정) 을 담은 파일이다.

프로젝트 내부에서 생성된 파일들을 파일 유형에 따라 reference를 저장하고 있다. conflict는 파일에 대한 reference가 없을 때 일어난다.

중요한 파일이므로 .gitignore에 추가할 수 없는 파일이다.

pbxproj 파일은 보기가 너무 불편하다. Pro Git Book 에서는 사실 텍스트 파일이지만 만든 목적과 의도를 보면 바이너리 파일이라고 말하며, 여러 명이 이 파일을 동시에 수정하고 Merge 할 때 diff가 도움이 되지 않고 프로그램이 읽고 쓰는 파일이기 때문에 바이너리 파일처럼 취급하는 것이 옳다고 한다.

 

해결 방법

  • pbxproj 파일을 binary 파일로 취급하기 위해 프로젝트 최상위 폴더(README.md가 있는 곳)에서 .gitattributes 파일을 만들고 설정해주면 된다.
vi .gitattributes            // .gitattributes 파일 생성
*.pbxproj binary merge=union // 입력 후 esc -> :wq -> enter로 저장

 

echo "*.pbxproj binary merge=union" >> .gitattributes

 

  • 생성된 .gitattributes 파일을 원격 저장소에 push
git add .
git commit -m "*.pbxproj Avoid Merge Conflict"
git push origin main