Git Subtree를 활용한 리포지토리 병합

henry·2024년 11월 17일

  • 하나의 리포지토리를 다른 리포지토리의 하위 폴더로 옮기려는 경우
  • Git Subtree를 통해 커밋 이력을 유지하면서 병합
  • 한 리포지토리를 다른 리포지토리의 하위 폴더로 병합하는 과정 정리

1. 병합할 리포지토리 클론

먼저, 병합할 상위 디렉토리인 리포지토리를 로컬로 클론합니다.
(상위에 위치시키려는 리포지토리)

git clone https://github.com/username/main-Ropository.git

  • 예시

    • git clone https://github.com/vedivero/learning-notes.git

2. 병합될 리포지토리 원격 추가

병합될(하위에 종속시키려는 리포지토리) 리포지토리의 URL을 원격으로 추가합니다.

git remote add merge-source https://github.com/username/merge-source-repo.git

원격 리포지토리 목록을 확인하여 추가된 내용을 확인합니다.

  • 예시

    • git remote add todo-list-app https://github.com/vedivero/todo-list-app.git
    • git remote -v
  • 병합할 리포지토리인 origin

  • 하위에 병합될 리포지토리인 todo-list-app


3. 원격 데이터 가져오기

병합할(상위 디렉토리) 리포지토리의 데이터를 가져옵니다:

  • git fetch merge-source

4. Subtree를 사용해 병합하기

git subtree 명령어를 사용해 병합될 리포지토리를 병합할 리포지토리의 특정 폴더에 병합합니다.

  • git subtree add --prefix=subdirectory-name merge-source main
  • --prefix

    • 병합할 디렉토리 경로
  • merge-source

    • 원격 리포지토리 이름
  • main

    • 병합할 브랜치 이름
  • 로컬 저장소에 todo-list-app 소스 코드 폴더 추가


5. 병합 결과 확인 및 푸시

병합이 성공적으로 완료되었는지 확인합니다:

  • git log

    • 병합될 리포지토리(todo-list-app)의 변경 이력
  • git push origin main
    • 결과를 원격 저장소에 푸시

  • 목표하는 대로 병합될 리포지토리(todo-list-app)를, 병합할 리포지토리(learning-notes)로 이동

6. 병합 후, 병합한 원격 저장소 삭제

  • 병합한 저장소와 병합된 저장소가 연결되어 있는 상태
  • git remote remove 원격저장소명

    • git remote remove todo-list-app
      • 병합된 원격 저장소의 연결 해제 완료

0개의 댓글