스택큐힙리스트

두 개의 Git 저장소를 어떻게 병합하나요? 본문

카테고리 없음

두 개의 Git 저장소를 어떻게 병합하나요?

스택큐힙리스트 2023. 3. 26. 02:08
반응형

다음 시나리오를 고려해보세요.

나는 작은 실험 프로젝트 A를 자체 Git 리포지토리에서 개발했습니다. 이제 A가 성숙해졌고, A가 큰 리포지토리를 갖는 더 큰 프로젝트 B의 일부가 되도록하고 싶습니다. 이제 A를 B의 하위 디렉토리로 추가하려고합니다.

양쪽의 기록을 잃지 않고 A를 B에 병합하는 방법은 무엇인가요?

답변 1

만약 # $ @ # ^ ^ $! $ &을 # $$ # ^ * $ & $ &에 병합하려면 :

cd path/to/project-b

git remote add project-a /path/to/project-a

git fetch project-a --tags

git merge --allow-unrelated-histories project-a/master # or whichever branch you want to merge

git remote remove project-a

한국어로 번역하면 다음과 같습니다: git merge different repositories?.

이 방법은 제게 꽤 잘 작동했고, 짧고 깔끔하다고 생각합니다.

만약 하위 디렉토리에 project-a 를 넣고 싶다면, git-filter-repo ( filter-branch 는 discouraged 입니다) 를 사용하면 됩니다. 위의 명령어들 전에 다음 명령어들을 실행하십시오:

cd path/to/project-a

git filter-repo --to-subdirectory-filter project-a

두 개의 큰 저장소를 병합하고 그 중 하나를 하위 디렉터리에 넣는 예제: https://gist.github.com/x-yuri/9890ab1079cf4357d6f269d073fd9731

참고: --allow-unrelated-histories 매개변수는 git >= 2.9에서만 존재합니다. #$&#@^!!$&을 참조하세요.

업데이트: 태그를 유지하기 위해 @jstadler가 제안한 --tags를 추가했습니다.

답변 2

Git 저장소를 병합하는 방법은 프로젝트에서 계속해서 레거시 코드를 업데이트하거나, 코드베이스를 병합하는 경우 필요할 수 있습니다. 이 문제를 해결하기 위해서는 두 저장소를 병합해야 재사용 가능한 코드와 충돌을 방지할 수 있습니다. 그러나 Git 저장소를 병합하는 것은 쉽지 않기 때문에 몇 가지 단계를 따라야 합니다.

1. 병합할 두 저장소를 복제합니다.

먼저 저장소를 병합하기 전에 두 저장소를 로컬 컴퓨터로 복제해야 합니다. 이것은 일반적인 git clone 명령어를 사용하여 수행할 수 있습니다.

2. 각 저장소에서 브랜치를 만듭니다.

다음 단계는 병합할 각 저장소에서 새로운 브랜치를 만드는 것입니다. 브랜치는 여러 개의 커밋을 포함할 수 있는 Git의 가지같은 개념입니다. 각 저장소에서 새로운 브랜치를 만들어 병합에 사용할 수 있습니다.

3. 올바른 순서로 저장소를 병합합니다.

Git 저장소를 병합하는 방법에 대한 가장 어려운 부분 중 하나는 올바른 병합 순서를 파악하는 것입니다. 가장 기본적인 방법은 'git merge'에서 순서를 지켜서 저장소를 병합하는 것입니다. 저장소를 병합할 때는 항상 작업하던 저장소에서 다른 저장소로만 변경 사항을 병합하도록 해야 합니다.

4. 충돌을 해결합니다.

코드가 중복되는 경우 충돌이 발생할 수 있습니다. 이러한 충돌을 해결하기 위해서는 Git 저장소에서 수동으로 변경 사항을 통합해야 합니다. 이 단계에서는 프로그래밍 능력과 경험이 필요합니다.

5. 병합을 완료합니다.

코드 충돌 해결이 완료되면, 저장소를 다시 저장하고 병합된 저장소를 새로운 저장소에 작성합니다. 이제 병합된 저장소를 사용하여 프로젝트를 다시 빌드할 수 있습니다.

Git 저장소를 병합하는 것은 쉽지 않지만, 이 단계를 잘 따라가면 코드 추가 또는 코드 변경을 병합하는 데 유용합니다. 이러한 방법으로 여러가지 저장소를 병합하면 복잡한 프로젝트의 코드베이스를 관리할 수 있으며, Git을 이용하여 코드 협업을 수행할 수 있습니다.

반응형
Comments