Github Repository 병합
Git을 사용하여 여러 레포지토리를 하나로 병합하는 과정을 설명하겠습니다. 이 과정에서는 서브트리(SubTree) 기능을 사용하며 기존 레포지토리들을 하나의 새 레포지토리에 추가하는 방법입니다.
1. 새로운 레포지토리 생성 및 클론
먼저 GitHub에서 새로운 레포지토리를 생성하고, 해당 레포지토리를 gitbash & 터미널로 로컬에 클론 합니다. 이때, Test 폴더가 생성될 것입니다.
git clone https://github.com/Joo-Veloper/Test.git
cd Test
2. 각 레포지토리 서브트리로 추가하기
기존의 레포지토리들을 각각 서브트리로 추가합니다. 이때 각 레포지토리를 저장할 폴더 이름을 지정하고,
--prefix 옵션을 사용합니다. (예를 들어 `DATA_JPA`라는 폴더에 해당 레포지토리를 추가하려면 다음과 같이 명령어를 입력합니다.)
git subtree add --prefix={레포 이름} {합치는 레포 주소} {레포의 브렌치}
git subtree add --prefix=DATA_JPA https://github.com/Joo-Veloper/DATA_JPA.git main
이렇게 하면 오류가 발생합니다.
3. 오류 발생 시 해결 방법
ambiguous argument 'HEAD':unknown revision or path not in the working tree" Error
이 Error 리포지토리에 기본 브랜치(main 또는 master)가 없거나, 아직 커밋이 없는 경우에 발생합니다.
4. 해결 방법
1. 최초 커밋을 생성하여 오류를 해결할 수 있습니다.
git commit --allow-empty -m "Initial commit"
위 명령어는 아무 내용이 없는 최초의 빈 커밋을 생성합니다.
2. working tree has modifications. Cannot add. 오류
작업 트리에 변경 사항이 있을 때 발생하며, Git은 추가 작업을 진행하기 전에 변경 사항을 처리하도록 요구합니다.
※ 변경 사항 커밋하기
git add .
git commit -m "Save changes before adding subtrees"
이 명령어로 모든 변경사항을 커밋하여 작업 트리를 깨끗하게 만듭니다.
※ 변경사항 버리기
git reset --hard
이 명령어를 작업 트리의 모든 변경사항을 버리고, 마지막 커밋 상태로 되돌립니다. 작업 중인 변경 사항을 유지하고 싶다면 이 방법은 사용하시면 안 됩니다!!
5. 서브 트리 추가 명령어 다시 추가하기
위 문제들을 해결한 후, 다시 서브트리 추가 명령어를 실행 후 git puhs {브렌치명}을 실행하면 성공적으로 레포지토리 서브트리로 병합할 수 있습니다.
git subtree add --prefix={레포 이름} {합치는 레포 주소} {레포의 브렌치}
git subtree add --prefix=DATA_JPA https://github.com/Joo-Veloper/DATA_JPA.git main
'GIT' 카테고리의 다른 글
Git Push ERROR(refusing to merge unrelated histories) (0) | 2024.02.29 |
---|---|
failed to push some refs to (0) | 2023.11.17 |
LF will be replaced by CRLF (0) | 2023.11.11 |