2009-07-17 2 views
14

코드베이스 -1, 코드베이스 -2의 두 코드베이스가 있습니다. 모두 저장소 (디렉토리)에 2 개의 Git 리포지토리를 비슷한 내용으로 병합 할 수 있지만 가계는 공유하지 않습니까?

내가 명령을 실행

...
git init 
git add . 
git commit -m "Initial Commit" 

....

코드베이스 -1과 코드베이스 -2간에 코드 차이가 있습니다.

이미 약 0.1 %의 차이가 있기 때문에 분기 할 수 없습니다. 파일 이름은 동일하지만 코드를 약간 수정하면됩니다.

두 리포지토리의 차이점을 병합하는 방법이 있습니까?

편집 됨 :

예를 들어 다음과 같이 가정 해 봅시다. 이것이 내가 시작하는 것입니다. 코드베이스 1과 2 사이에는 약간의 차이가 있습니다.

[oldest code case] 
code-base-1/ 
code-base-1/.git [git stuff with already created repo] 
code-base-1/file1 
code-base-1/file2 

code-base-2/ 
code-base-2/.git [git stuff with already created repo] 
code-base-2/file1 
code-base-2/file2 

이상적으로 코드베이스 2는 조금 더 새롭기 때문에 삭제할 수 있습니다.

어떻게 병합 된 파일이 하나가 될 수 있도록이 코드베이스를 병합합니까?

답변

7

세력이 사실에서 오는 문제 사람들은 (다른 SHA-1 첫 번째 노드와) 두 개의 서로 다른 저장소입니다, 그리고 하나 개의 repo 복제 한 후 수정했습니다.
즉, 'git fetch'이면 충분하지 않습니다.

당신은 단순히 CB2의 내용를 병합 (즉 힘내 외부에) 외부 도구를 사용할 수는 WinMerge와 같은 CB1에 (코드-자료-2), 질문 "Merging in changes from outside a git repository"에서 제안.

다른 옵션은 인출 완료하는 데 약간의 이식 기술을 사용하는 것입니다 : 질문 "Can two identically structured git repos be merged when they have never had any common history?"

$ cd project1 
$ git config remote.project2.url /path/to/project2 
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*' 
$ git fetch project 

를 참조 플러스 프로젝트 1에 프로젝트 2의 커밋을 연결하는 이식 파일 (.git/info/grafts)을 수정합니다.

-2

설명 된대로 첫 번째 저장소를 만듭니다.

두 번째 폴더의 내용으로 ".git"라는 파일 만들 : 당신은 지금 자식은 병합하는 등 커밋/추가, 자식 diff 명령을 실행할 수 있습니다

gitdir: <path-to-first-repository>/.git 

두 번째 저장소에 당신의 변경.

+0

좀 더 구체적일 수 있습니다. 예를 들어, 다음과 같은 경우를 가정 해 봅시다. 이것이 내가 시작하는 것입니다. 코드베이스 1과 2 사이에는 약간의 차이가 있습니다. [가장 오래된 코드 케이스] 코드베이스 -1/ 코드베이스 -1 /.git [이미 생성 된 repo가있는 자식 도구] 코드베이스 -1/파일 1 코드베이스 -1/파일 2 코드베이스 -2/ 코드베이스 -2/.git [이미 생성 된 repo가있는 git stuff] code-base-2/file1 code-base-2/file2 이상적으로 조금 더 최근 버전이므로 code-base-2를 삭제할 수 있습니다. 어떻게이 코드베이스를 병합합니까? 그래서 결국 병합 된 파일들로 하나가 나온다. –

+0

댓글이 올바르게 포맷되지 않았습니다 (위 참조). –

4

시도 :

cd code-base-1 
git fetch ../code-base-2 master:code-base-2 
git merge code-base-2 
+0

다른 프로젝트와 마찬가지로 두 프로젝트 버전을 결합합니다 (공동의 커밋이없는 경우). –

관련 문제