-
[git] Some checks were not successful 에러프로그래밍/Git 2023. 11. 7. 12:11728x90반응형
오늘은 git관련 잇슈를 들고 왔다. 이것때문에 어젯밤 2시간을 허비하고 말았다. 하지만 실제 해결과정은 불과 1분도 채 되지 않았다. 이것이 개발자의 숙명인것인가.. 사실 이것저것 해본게 너무 많아서 오늘 포스팅한 내용이 완벽한 해결과정은 아니라는 말을 먼저 하고 싶다.
일단 어떤 문제가 생겼고, 어떤 해결과정을 겪었는지 서술해보겠다.
프로젝트 코드 리펙토링을 위해 프로젝트 내부의 파일 이름과 디렉토리를 수정하고 커밋&푸시하던 중 이런 문제가 발생했다.
분명 커밋푸시에 누락된 내용은 없는데 커밋에 x표시가 떠서 확인해보면 이렇게 faild가 뜨는 것인데, 디테일을 한번 살펴보자
깃허브 Push workflow를 살펴보면
이런 에러가 뜨는 것을 볼수 있다. 잘 보면 ".gitmodules에서 하위 모듈 경로 'imad-ios'에 대한 URL을 찾을 수 없습니다" 라는데 이떄까지 난 submodule이 뭔지 몰랐다. 그래서 찾아보니
프로젝트를 수행하다 보면 다른 프로젝트를 함께 사용해야 하는 경우가 종종 있다. 함께 사용할 다른 프로젝트는 외부에서 개발한 라이브러리라던가 내부 여러 프로젝트에서 공통으로 사용할 라이브러리일 수 있다. 이런 상황에서 자주 생기는 이슈는 두 프로젝트를 서로 별개로 다루면서도 그 중 하나를 다른 하나 안에서 사용할 수 있어야 한다는 것이다.
출처 : https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88
Git - 서브모듈
gitmodules 파일에 있는 URL은 조건에 맞는 사람이면 누구든지 Clone 하고 Fetch 할 수 있도록 접근할 수 있어야 한다. 예를 들어 다른 사람이 Pull을 하는 URL과 라이브러리의 작업을 Push 하는 URL이 서로
git-scm.com
이렇다고 한다.
물론 현재 프로젝트에서 외부 라이브러리를 사용하는 것은 맞지만 추가하고 커밋푸시는 지금까지 잘 됐었고 프로젝트 파일 경로의 디렉토리 이름을 수정한 뒤로부터 생긴 문제다. 본래 그런 경우가 많았기 때문에 머릿속은 점점 혼란 스러워지기 시작했다.
잇슈 해결 과정
첫번쨰로 한 행동은 서브모듈의 캐시를 삭제하는 것이었다.
출처:https://stackoverflow.com/questions/14720034/no-submodule-mapping-found-in-gitmodules-for-path
No submodule mapping found in .gitmodules for path
When I run git submodule update No submodule mapping found in .gitmodules for path 'Classes/lib/AFKissXMLRequestOperation' But I have no submodule Classes/lib/AFKissXMLRequestOperation in current...
stackoverflow.com
위의 사이트 대로 로컬 저장소에 있는 파일은 삭제하지 않고 원격 저장소에 있는 파일을 삭제하는 방법을 채택했다.
git rm --cached '삭제할 프로젝트 경로'
하지만 삭제가 되었음에도 불구 하고 같은문제는 반복되었다. 여러 블로그와 사이트를 뒤져서 나온 방법은 동일한 내용들 뿐이였다.
이것때문에 원래 프로젝트를 백업한 뒤에 어제 하루동안에 작업을 모두 날리고 과거로 reset --hard를 할까 고민을 했다. 그리고 결국은 커밋 10개와 문제해결을 맞바꾸기로 하고 과거로 돌아가서 강제 push&pull을 했다.
하지만 정상적인 버전으로 덮어써도 위와 같은 문제는 계속됐다.
마음을 가다듬고 차근차근 생각해보았다. 보니까 내 프로젝트에 디렉토리 안에 프로젝트 클론디렉토리가 하나 들어있었고 그 디렉토리 이름이 아까 삭제하려던 이름과 동일한것을 보고 그 폴더를 없애버렸다.(
이게 왜 여기있지..?)그러고 프로젝트 파일 하나를 수정한 뒤 다음과 같이 커밋을 하고 상태를 보았다.
git status
음 이제 다시 해봐도 되는거겠찌 혹시 몰라서 원격저장소의 파일을 다시 삭제하고
git rm -rf --cached '삭제할 프로젝트 경로'
git add .
git commit -m "message"git status를 해보니
굳 이대로 push
깔끔쓰
사실 원래 문제였던 디렉토리 파일명 수정과는 아무런 관련 없는 해결방법이다. 내가 보기엔 그냥 푸시를 하던 도중 충돌이 난거고 발견했을때 한 행동과는 상관이 없는 듯하다. 서브모듈은 상위 git project안에 하위 project도 git으로 관리할 수 있게 함이 용도인데 아까 말했듯이 프로젝트 내부에 그 프로젝트의 클론이 들어있었기 때문에 .gitsubmodules가 중복되어 문제가 생겼는지도 모르겠다. 로컬디렉토리와 원격 디렉토리 모두 문제가 되는 디렉토리를 삭제 후 정상 푸시가 되었기 때문에..
git으로 코드 관리는 코딩보다 정말 어려운것 같다.. 항상 잇슈가 터질때마다 블로그를 뒤져봐도 해결하는데 몇시간씩 걸리니.. 좀더 자주 다뤄볼 필요가 있을 것 같다.
'프로그래밍 > Git' 카테고리의 다른 글
[git] - 한 프로젝트에 레포지토리가 두개? (0) 2023.12.21 [Git] #Git/GitHub란? (0) 2022.09.16