가장 깔끔하고 추천하는 방법은 새로운 통합 저장소를 만들고, 각 프로젝트의 기록을 하위 폴더로 가져오는 것입니다. git subtree 또는 git read-tree 명령어를 사용하는 두 가지 대표적인 방법 중 subtree를 사용하는 방식으로 설명합니다.


✅ 사전 준비: 원본 폴더 백업 및 GitHub 저장소 생성

가장 중요한 첫 단계입니다. 만일의 사태에 대비해 원래의 frontend와 backend 폴더를 복사해서 백업해두세요.

그리고 GitHub에서 합쳐진 코드를 저장할 새로운 비어있는(empty) 저장소를 생성해 주세요. (README 파일 등을 만들지 않은 완전한 빈 저장소로 만드는 것이 좋습니다.)


방법 1: git subtree 사용 (가장 추천하는 방법)

git subtree는 다른 저장소의 기록을 현재 저장소의 하위 디렉토리로 깔끔하게 통합하는 강력한 도구입니다.

📜 작업 순서

  1. 통합 프로젝트 폴더 생성 및 Git 초기화 새로운 통합 프로젝트를 위한 폴더를 만들고 Git 저장소로 초기화합니다.
  2. Bash
     
    # 새로운 통합 폴더를 만들고 이동합니다.
    mkdir monorepo
    cd monorepo
    
    # Git 저장소로 초기화합니다.
    git init
    
    # 미리 만들어둔 비어있는 GitHub 저장소를 원격으로 연결합니다.
    git remote add origin [새 GitHub 저장소 URL]
    
    # REAEME.md 파일 생성 및 최초 커밋 필요
    git add .
    git commit -m "initial commit"
  3. git subtree로 frontend 프로젝트 추가 subtree add 명령을 사용해 frontend 폴더의 내용을 frontend/ 하위 디렉토리로 추가합니다.
    • --prefix 옵션은 코드가 위치할 하위 폴더 이름을 지정합니다.
    • [frontend 폴더의 로컬 경로]는 기존 frontend 프로젝트 폴더의 상대 또는 절대 경로입니다.
    • main은 가져올 브랜치 이름입니다. (만약 master라면 master로 변경하세요.)
    Bash
     
    # monorepo 폴더와 같은 level 위치에 frontend 폴더를 위치시키고, "../frontend"로 사용하는 것이 좋음
    # 왜냐하면, subtree 명령어가 mkdir <prefix명> 과 mv 기능을 해주기 때문이다.
    # 예시: monorepo 폴더와 frontend 폴더가 같은 위치에 있다면 ../frontend 입니다.
    git subtree add --prefix=frontend [frontend 폴더의 로컬 경로] main
  4. git subtree로 backend 프로젝트 추가 frontend와 동일한 방식으로 backend 프로젝트를 추가합니다.
  5. Bash
     
    # monorepo 폴더와 같은 level 위치에 frontend 폴더를 위치시키고, "../frontend"로 사용하는 것이 좋음
    # 왜냐하면, subtree 명령어가 mkdir <prefix명> 과 mv 기능을 해주기 때문이다.
    # 예시: monorepo 폴더와 backend 폴더가 같은 위치에 있다면 ../backend 입니다.
    git subtree add --prefix=backend [backend 폴더의 로컬 경로] main
  6. GitHub에 Push 이제 모든 기록이 합쳐졌습니다. GitHub에 푸시하여 작업을 마무리합니다.
  7. Bash
     
    git push -u origin main
    

✨ git subtree의 장점

  • 간단함: 명령어가 직관적이고 간단합니다.
  • 완전한 통합: 모든 기록이 현재 저장소의 일부가 되어 관리가 편합니다.
  • 추후 업데이트 용이: 나중에 원래 frontend 저장소에 변경 사항이 생기면 git subtree pull 명령으로 쉽게 업데이트를 가져올 수 있습니다.
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기