저장소의 모든 콘텐츠를 다른 기존 저장소의 디렉터리로 전송

저장소의 모든 콘텐츠를 다른 기존 저장소의 디렉터리로 전송

GitHub 저장소(X)가 있고 해당 파일을 mv ${HOME}/x/* ${HOME}/y/xLinux 파일 트리의 일반 파일처럼 다른 기존 GitHub 저장소(Y)의 디렉터리로 이동하고 싶습니다.

  • 이 특별한 경우에는 파일의 Git 기록은 신경 쓰지 않고 파일 자체만 원합니다.
  • 현재 GitHub는 첫 번째 저장소의 모든 파일이 포함된 zip 파일을 생성하여 두 번째 저장소에 업로드하는 경우 옵션을 제공하지 않습니다.정제해당 디렉토리에 넣어주세요

저장소의 모든 파일을 다른 기존 저장소의 디렉터리로 이동하는 방법은 무엇입니까?

답변1

내장된 개념 없음이동하다저장소 간의 파일. 당신은 할 수복사원하는 경우 이전 저장소에서 개별적으로 삭제할 수 있습니다.

master분기 에서 분기 https://github.com/roiko/x로 파일을 이동 하고 해당 디렉터리 아래의 파일을 이동한다고 가정해 보겠습니다 .mainhttps://github.com/roiko/ysubdir

파일을 이동하고 기록을 유지하는 방법은 다음과 같습니다. 기록은 파일이 루트 디렉터리에 있는 것으로 기록하고 루트 디렉터리로 이동하여 subdir"가져왔습니다". 항상 다운된 상태로 파일을 기록하는 것도 가능 subdir하지만 추가 도구가 필요합니다. 경고: 테스트되지 않은 코드입니다.

  1. x와 y를 모두 리모콘으로 사용할 수 있는 작업 복사본을 만듭니다.

    git clone https://github.com/roiko/y
    cd y
    git remote add x https://github.com/roiko/x
    git fetch x
    
  2. 파일을 이전 저장소에서 하위 디렉터리로 이동합니다. 나는 그것이 subdir에 아직 존재하지 않는다고 가정합니다 x. x-move마이그레이션을 수행하기 위해 임시 로컬 브랜치를 생성합니다 . x/master이동 커밋 으로 시작 하고 추가합니다.

    git checkout -b x-move x/master
    mkdir subdir
    shopt -s extglob dotglob
    git mv -- !(.git|subdir) subdir/
    git commit -m 'Move everything to subdir/'
    

    shopt명령은 bash에서 작동합니다. zsh에서는 대신 setopt kshglob dotglob.

  3. 이동된 파일을 로 가져옵니다 y. 이는 콘텐츠 작업을 위한 로컬 브랜치를 생성 y하고 x-move이전 단계에서 생성한 브랜치를 병합하는 것을 의미합니다.

    git checkout -b main y/main
    git merge x-move
    git commit -m 'Import files from roiko/x under subdir'
    
  4. 결과를 이끌어냅니다.

    git push origin
    
  5. (선택 사항) x저장소를 삭제합니다. master이제 해당 지점의 모든 콘텐츠와 기록이 문서화되지만 y다른 지점, 문제 등은 문서화되지 않습니다.

답변2

보관된 기록에 관심이 없다면 x다음으로 이동할 수 있습니다 y.

  1. 두 프로젝트 복제

    git clone https://github.com/roiko/x
    git clone https://github.com/roiko/y
    
  2. x모두 복사y

    cp -a x y/
    
  3. 복사된 모든 데이터를 포함하는 커밋 만들기

    cd y
    git add x
    git commit -m "Import files from roiko/x"
    
  4. 푸시 업데이트y

    git push
    

관련 정보