오늘의 Git 서브모듈 이슈 해결 후기

SOCICAL·2025년 1월 25일
0
# 최근 수정 날짜: 25.01.25

Git 프로젝트에서 서브모듈의 원격 저장소 URL을 변경하거나 서브모듈명을 수정한 후 발생하는 문제를 해결하고, 다시 발생할 수도 있어 해결 방법에 대해 정리하려고 한다.

# 문제 상황

  • 서브모듈의 이름이나 저장소 URL을 변경한 후 다음과 같은 오류가 발생할 수 있다:
fatal: No url found for submodule path 'oz_python_assignment' in .gitmodules
fatal: no submodule mapping found in .gitmodules for path 'oz_python_assignment'
fatal: 'oz_python' already exists and is not a valid git repo

처음엔 당황했다... ㅡ.ㅡ, 차근차근 문제를 해결해 나아갔고, 다시 발생할 수도 있어 해결 방법을 정리하려 한다.

# 해결 방법

  1. .gitmodules 파일 수정
  • 서브모듈의 경로가 변경되었을 경우 프로젝트의 .gitmodules 파일을 수정해야 한다.
    1) 파일을 열기 위해 다음 명령어를 실행해야 한다:
    vim .gitmodules
    2) 이후 파일 내용을 아래와 같이 수정한다:
    [submodule "oz_python"]
    path = oz_python
    url = https://github.com/socical-dev/oz_python.git
    3) 변경 내용을 저장하려면 ESC 키를 누른 후 :wq를 입력하고 Enter를 눌러 종료한다.
  1. .git/config 파일 확인 및 수정
  • 서브모듈이 제대로 반영되었는지 확인하려면 .git/config 파일을 열어야 한다.
    1) 파일을 열기 위해 다음 명령어를 실행해야 한다:

    vim .git/config

    2) 이후 서브모듈 항목이 아래와 같이 되어 있는지 확인하고 수정한다:

    [submodule "oz_python"]
    url = https://github.com/socical-dev/oz_python.git
    active = true
  1. 서브모듈 재등록
  • 기존 서브모듈을 삭제하고 새로 등록할 수 있다.

    git submodule deinit -f oz_python_assignment
    rm -rf .git/modules/oz_python_assignment
    git rm -f oz_python_assignment
    
    git submodule add https://github.com/socical-dev/oz_python.git oz_python
    git submodule update --init --recursive
  1. 서브모듈 동기화
  • 경로를 수정한 후 서브모듈 정보를 다시 동기화한다.
    git submodule sync
    git submodule update --init --recursive
  1. 원격 URL 변경 확인
  • 서브모듈이 정상적으로 변경되었는지 확인하려면 다음 명령어를 실행한다.
    git remote -v
    git submodule status

# 추가 팁

  • 서브모듈을 삭제 후 다시 클론 받을 경우, 다음 명령어를 실행한다.

    git submodule update --init --recursive
  • 서브모듈의 변경 사항을 커밋 후 푸시하는 것을 잊으면 안된다.

    git add .gitmodules .git/config
    git commit -m "Update submodule path"
    git push origin main

이 정리를 활용해 서브모듈 관련 문제를 원활히 해결 수 있었다!!!

이제는,,, 이슈가 발생하지 않기를,,,ㅠㅠ

0개의 댓글