IT

한 서버에서 새로운 서버로 GIT 저장소를 마이그레이션하는 방법

lottoking 2020. 4. 2. 08:23
반응형

한 서버에서 새로운 서버로 GIT 저장소를 마이그레이션하는 방법


내가 가져가는 서버가 있습니다. 내가 남긴 것은 저장소뿐입니다. 이 서버는 내 프로젝트 중 하나의 원산지 (마스터)로 표시됩니다. 기록을 유지하기 위해 저장소를 이동하는 올바른 방법은 무엇입니까?


새로운 저장소 위치를 추가하려면

git remote add new_repo_name new_repo_url

그런 다음 컨텐츠를 새 위치로 푸시하십시오.

git push new_repo_name master

마지막으로 오래된 것을 제거하십시오

git remote rm origin

그런 다음 bdonlan이 말한 것을 수행하고 .git / config 파일을 편집하여 new_repo_name을 origin으로 변경하십시오. 원본 (원격 원격 저장소)을 제거하지 않으면 다음을 사용하여 변경 내용을 새 리포지토리로 푸시하면됩니다.

git push new_repo_name master

모든 브랜치와 태그를 마이그레이션하려면 다음 명령을 사용해야합니다.

git clone --mirror [oldUrl]

모든 지점과 오래된 레포를 복제

cd the_repo
git remote add remoteName newRepoUrl

새 리모컨을 설정하려면

git push -f --tags remoteName refs/heads/*:refs/heads/*

심판 / 헤드 아래의 모든 심판을 푸시하기 (아마도 당신이 원하는 것입니다)


이것은 완벽하게 나를 위해 일했습니다 .

git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin

나는 이것이 당신의 현재 저장소의 거울을 만들고 그것을 새로운 위치로 푸시한다고 언급해야합니다. 따라서 큰 repos 또는 느린 연결에 시간이 걸릴 수 있습니다 .


그것을 복사하십시오. 정말 간단합니다. :)

클라이언트 쪽에서는 클라이언트 로컬 리포지토리에서 .git / config를 편집하여 필요에 따라 리모컨이 새 URL을 가리 키도록합니다.


이것은 다른 답변 중 일부에서 부분적으로 수행됩니다.

git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new

나는 지시 사항을 따르기 위해 다른 사람들이 말한 것을 다시 게시하고 있습니다.

  1. 저장소 이동 : 새 서버, cd이제 저장소를 보유 할 상위 디렉토리에 로그인 rsync하고 이전 서버에서 복사 하는 사용 하십시오.

    new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
    
  2. 클라이언트가 새 리포지토리를 가리 키도록합니다. 이제 리포지토리를 사용하는 각 클라이언트에서 이전 원점에 대한 포인터를 제거하고 새 원점에 포인터를 추가하십시오.

    client> git remote rm origin
    client> git remote add origin user@new.server.com:path/to/repository.git
    

GitHub에서이 레시피를 살펴보십시오 : https://help.github.com/articles/importing-an-external-git-repository

나는 발견하기 전에 여러 가지 방법을 시도했다 git push --mirror.

매력처럼 일했다!


BitBucket의 지침에 따라 모든 지점이있는 리포지를 이동했습니다. #캐릭터 다음에 설명이있는 단계가 있습니다 .

cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go

나를 위해 잘 작동했습니다.


다음 단계를 따르십시오

  • 자식 원격 추가 새로운 출처
  • git push-모든 새로운 출처
  • git push-태그를 새로운 출처
  • 자식 원격 rm 원산지
  • git remote new-origin origin의 이름을 바꾸십시오.

다음 명령을 사용할 수 있습니다.

git remote set-url --push origin new_repo_url

http://gitref.org/remotes/의

$ git remote -v
github  git@github.com:schacon/hw.git (fetch)
github  git@github.com:schacon/hw.git (push)
origin  git://github.com/github/git-reference.git (fetch)
origin  git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github  git@github.com:schacon/hw.git (fetch)
github  git@github.com:schacon/hw.git (push)
origin  git://github.com/github/git-reference.git (fetch)
origin  git://github.com/pjhyett/hw.git (push)

다음과 같이 간단해야합니다.

git remote set-url origin git://new.url.here

이렇게하면 origin새 리포지토리 의 이름 유지 한 다음 다른 답변에 설명 된대로 기존 리포지토리로 새 리포지토리로 푸시합니다. 혼자 일하고 로컬 크립을 가지고 있다고 가정하면, 로컬 리포 내부에서

git push origin --mirror # origin points to your new repo

그러나 "git push --mirror"가 저장소를 백업하기에 충분합니까?를 참조하십시오 . (모두 사용하지 않고 --mirror한 번만 사용하십시오 ).


이것은 gitlab 이 git 저장소를 한 서버에서 다른 서버로 "마이그레이션"하기 위해 현재 제안한 이 답변 의 변형입니다 .

  1. 이전 프로젝트가 폴더에 existing_repo저장된 이라고 가정 existing repo합니다.

  2. 새 서버에서 저장소를 작성하십시오. 새 프로젝트의 URL이git@newserver:newproject.git

  3. 명령 행 인터페이스를 열고 다음을 입력하십시오.

    cd existing_repo
    git remote rename origin old-origin
    git remote add origin git@newserver:newproject.git
    git push -u origin --all
    git push -u origin --tags
    

이 방법의 장점은 이전 서버에 해당하는 분기를 삭제하지 않는다는 것입니다.


모든 커밋과 브랜치를 이전에서 새로운 저장소로 유지하려면 다음 지침을 따르십시오.

git clone --bare <old-repo-url>
cd <old-repo-directory>
git push --mirror <new-repo-url>

git-copy사용 하여 모든 히스토리와 리포지토리를 복제 할 수 있습니다 .

git copy http://a.com/old.git http://a.com/new.git

한 서버에서 새 서버로 #git 저장소를 마이그레이션하려면 다음과 같이하십시오.

git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS  NEW_REPOSITORY_PATH
#check out all remote branches 
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags

기존 리포지토리의 모든 원격 브랜치 및 태그가 새 리포지토리에 복사됩니다.

이 명령을 단독으로 실행 :

git push NEW_REPOSITORY_ALIAS

마스터 지점 (추적 지점 만) 만 새 저장소에 복사합니다.


한 원본에서 다른 원본으로 이동하고 로컬 시스템에서 현재 원본의 백업을 유지하려면 다음 단계를 수행하십시오.

  1. 먼저 로컬로 이동하려는 (git) 폴더로 이동하십시오.
  2. 온라인으로 새 리포지토리 생성이 단계는 코드를 푸시 할 수있는 리포지토리를 생성합니다.

이제 폴더에서

git remote get-url origin

위의 명령은 현재 원격 원점 URL을 제공하며 마지막 단계에서 원점을 다시 설정하는 데 유용합니다.

git remote set-url origin git@github.newlocation:folder/newrepo.git

위의 명령은 원격 원점을 새로운 위치로 설정합니다

git push --set-upstream origin develop

위의 명령은 현재 활성 로컬 브랜치를 branchname develop으로 원격으로 푸시합니다. 물론 그것은 모든 역사가 푸시로 모든 역사를 유지합니다.

git remote set-url origin <original old origin>

위의 명령은 원격 원점을 현재 원점으로 다시 설정합니다. 기존 폴더에 있고 현재 로컬 폴더 이름을 리포지토리 복제를 위해 생성 할 새 폴더와 혼합하지 않기를 원하기 때문에 원합니다. 당신은 방금 밀었습니다.

도움이 되었기를 바랍니다,

참고 URL : https://stackoverflow.com/questions/1484648/how-to-migrate-git-repository-from-one-server-to-a-new-one

반응형