2016-12-26 5 views
1

는 일부 파일 (file1, file2, file3)이있는 디렉토리 (directoryA)이 있고 난 RepoA에서 RepoB이 파일을 이동하려는.RepoA에서 RepoB로 파일을 가져 오는 동안이 파일과 관련된 커밋을 유지 관리하는 방법? <code>RepoA</code> 내부

RepoA 
    directoryA 
     file1 
     file2 
     file3 
    directoryB 
     file1 
     file2 
     file3 

내가하고 싶은 것, RepoB의 모습 후 :

RepoB 
    directoryA 
     file1 
     file2 
     file3 

난 그냥 RepoA에서 directoryA를 다운로드하고 RepoB에 업로드 할 수 있지만 나는 것

RepoA입니다 file1, file2file3과 관련된 커밋을 잃어 버리십시오.

나는 또한 (병합 같이) 전체 RepoARepoB에 전송할 수 없습니다 directoryB에서 커밋 RepoA에 관련이없는 것 때문이다.

편집 : 내가 사용 시도 git filter-branch --subdirectory-filter directoryName -- --all 그것은 나를 위해 작동하지 않습니다

은 매번 내가 오류 얻을 해당 명령을 실행 한 후 끌어하려고

:

fatal: refusing to merge unrelated histories 
+1

너는 repo A에서 역사를 지키고 싶습니까? 전부 또는 디렉토리와 관련된 파일일까요? – MTZ4

+1

나는 단지 내가 움직이고있는 파일의 역사를 원한다. 전체 Repo A의 역사는 아니다. – maviz

답변

2

먼저 확인하시기 바랍니다 다음 작업을 수행하면 로컬 RepoA의 기록이 수정되고 일부 파일이 삭제되므로 새 분기를 확인하고이 프로세스를 확인하십시오.

로컬 RepoA,

지역 RepoB에서
(1) git filter-branch --subdirectory-filter directoryA <branch> 
(2) mkdir directoryA 
(3) mv * directoryA 
(4) git add . 
(5) git commit -am 'message' 

,

(6) git remote add repoA <local RepoA’s path> 
(7) git pull RepoA <branch> 

당신이 오류가 발생하는 경우 : fatal: refusing to merge unrelated histories 단계 (7) 동안, 당신은, 그리고 git pull RepoA <branch> --allow-unrelated-histories

file1 수행하여 관련이없는 역사를 무시 당길 수 file2file3의 커밋 기록이 RepoB에 표시됩니다. gitk --all을 사용하면 더 명확하게 볼 수 있습니다.

자세한 내용은 here을 참조하십시오. (상단 두 개의 댓글 (thisthis)은 더 명확하게 설명 할 수 있습니다).

+0

작동하지 않습니다. repo-a에 있던 다른 디렉토리가 사라졌습니다. 또한 repo-a에서 로컬 repo-a를 가져올 수 없습니다. >> 치명적인 오류 : 관련이없는 기록을 병합하지 않겠습니다. – maviz

+0

언급 한 참조를 읽었으며 주석도 읽었습니다.그들 모두는 항상 같은 오류를 낳고 항상 같은 단계에서 발생합니다 (단계 당김) $ fatal : 관련이없는 기록을 병합하지 않기 – maviz

+1

예, 첫 번째 명령 다음에는 RepoA에 하위 폴더에 포함 된 파일 만 있습니다. 이제 RepoA의 루트 디렉토리에 있습니다. 그래서 두 번째 및 세 번째 명령은 하위 폴더에 파일을 다시 저장합니다. git pull 단계에서는'RepoA master --allow-unrelated-history'를 대신 사용해보십시오. –

관련 문제