2011-12-01 2 views
1

큰 스레드 Detach subdirectory into separate Git repository이 있지만 항상 약간의 차이가 있습니다. 내 임무는 위의 질문과는 달리 하위 디렉토리 대신 파일이 있다는 점입니다.일부 파일을 별도의 Git 저장소에 둡니다.

Ex.

XYZ/ 
    .git/ 
    XY1/ 
    ABC/foo.py 
    ABC/bar.py 
    ABC/asdf.py 
    ABC/... 

그리고 별도의 Git 저장소에 foo.pybar.py을 추출하고 싶습니다. 커밋 히스토리가 손실을 제외하고 지금까지

$ mkdir foobar 
$ git mv ABC/foo.py ABC/bar.py foobar 
$ git commit -m '...' 
$ git filter-branch --subdirectory-filter foobar HEAD 

너무 좋은 :

내 첫 재판이 두 파일의 하위 디렉토리를 만들어 1에 언급 된 방법을 사용하는 것입니다. 그거 알아?

답변

0

"먼"폴더 "ABC"를 로컬 폴더 "ABC"에 병합하고 기록을 유지하려면 the subtree merge strategy을 사용해야합니다. 그런 다음 filter-branch를 사용하여 원하지 않는 파일을 제거합니다. 나는 이러한 목표를 달성하기 위해 무슨 짓을

0

이었다

  1. git clone ABC/ DEF/; cd DEF
  2. git remote rm origin
  3. git filter-branch --prune-empty --tree-filter 'rm -fr <list of files/folders to remove>' -- --all
  4. git filter-branch -f --prune-empty --subdirectory-filter DEF -- --all

그리고 그것은 그 것이었다. 새로운 프로젝트 원격을 추가하고 별도의 저장소에서 계속 작업합니다.

관련 문제