2016-06-28 2 views
1

나는 자식 저장소 있습니다두 원격 저장소, 다른 forlders는

저장소 A :

config 
    view1.yml 
    view2.yml 
public 
    css/ 
    styles.css 
    js/ 
    scripts.js 
    index.html 

내가 다른 원격 저장소를 추가하고자하지만, 단지 공용 폴더의 내용을 추적, 예 :

저장소 B :

css/ 
    styles.css 
js/ 
    scripts.js 
index.html 

로컬에서 어떻게 할 수 있습니까? git remote add? 모든 내보낼 그리고 당신이 정말로 다른 모든 것들을 생략 할 하나의 디렉토리에 해당되는 경우

+0

[이 관련 답변] (http://stackoverflow.com/a/38099643/4233593) –

답변

1

, 당신은 자식 필터 지점 아래로 분기를 필터링하고

리포 B. 밖으로 그냥 결과 분기를 밀어 수 당신이 지점 nameOfPublicBranch에 하나에 아래로 커밋 스쿼시하려면

git checkout -b nameOfPublicBranch 
// Create a new branch where you want to start to filter 

git filter-branch -f --subdirectory-filter public 
// This filters your branch down to commits that modified public (and below) 

git push repoB nameOfPublicBranch 
// now export to repoB just this stuff that you wanted on your branch nameOfPublicBranch 

git checkout <yourOldBranchName> 
// get back to your old branch 

, 다음을 수행하십시오 아래 단지 디렉토리로 변경 "대중"을 유지하려는 가정에 관심이있는 지점의 끝에서

, 네가 그것을 밀기 전에 그것에 rebase 스쿼시.

아마도이 접근 방법에는 여러 가지가있을 수 있으며 하나는 하위 모듈을 사용할 수 있으며이 접근법 (기록 다시 쓰기)에 의도하지 않은 문제가있을 수 있습니다. 이미 파일이 추적이 있다면 당신에게 다음

* 
!/css 
!/js 

:

0

은 아마 당신은 다음과 같은 내용으로 (파일을 무시하고 그들을 추적하지 않는 자식을 말한다) gitignore을 (을 테스트하지)를 사용한다 gitignore를 설정하기 전에 git rm --cached <file>을 실행해야합니다.

gitignore에 대해 더 자세히 알고 싶다면 git tutorial의 this part을 읽어보십시오.

1

git subtree을 살펴보십시오.

은 ... 하위 트리가 하위 프로젝트가 의 서브 디렉토리의 주요 프로젝트에 포함 할 수 있도록, 선택적으로 하위 프로젝트의 전체 역사를 포함 : 해당 설명서에서 다음과 같은 설명합니다.

는 예를 들어, 응용 프로그램의 하위 디렉토리와 같은 라이브러리에 대한 소스 코드를 ...

어디 선가 ( git init --bare를) 새로운 베어 저장소를 만들 것

을 포함하는 하위 트리를 split 명령을 할 수 공용 폴더의 기록을 "분기"합니다. 그런 다음이 정보를 다른 저장소로 푸시합니다. 이 예제는 위에 링크 된 문서에서 Example 3으로 볼 수 있습니다.

<go to the new location> 
git init --bare 
git subtree split --prefix=lib --annotate="(split)" -b split 
git push <new-repo> split:master