내가 가져가는 서버가 있습니다. 내가 남긴 것은 저장소뿐입니다. 이 서버는 내 프로젝트 중 하나의 원산지 (마스터)로 표시됩니다. 기록을 유지하기 위해 저장소를 이동하는 올바른 방법은 무엇입니까?
내가 가져가는 서버가 있습니다. 내가 남긴 것은 저장소뿐입니다. 이 서버는 내 프로젝트 중 하나의 원산지 (마스터)로 표시됩니다. 기록을 유지하기 위해 저장소를 이동하는 올바른 방법은 무엇입니까?
답변:
새로운 저장소 위치를 추가하려면
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 push -u new_repo_name --all
.
git remote rename new_repo_name origin
모든 브랜치와 태그를 마이그레이션하려면 다음 명령을 사용해야합니다.
git clone --mirror [oldUrl]
모든 지점과 오래된 레포를 복제
cd the_repo
git remote add remoteName newRepoUrl
새 리모컨을 설정하려면
git push -f --tags remoteName refs/heads/*:refs/heads/*
심판 / 헤드 아래의 모든 심판을 푸시하기 (아마도 당신이 원하는 것)
--tags
와 refs/heads/*:refs/heads/*
호환되지 않습니다 --mirror
. stackoverflow.com/a/26552740/1484831이 잘 작동했습니다.
refs/heads/refs/heads
사용하여 접두어를 사용 git push -f --tags remoteName refs/heads/*:refs/heads/*
했습니다.git push remoteName --mirror
push
또한 지원합니다 --mirror
. git clone --mirror; cd repo; git push --mirror new_remote
트릭을 수행해야합니다
이것은 완벽하게 나를 위해 일했다 .
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 push --mirror origin
이상 -f
.
그것을 복사하십시오. 정말 간단합니다. :)
클라이언트 쪽에서는 클라이언트 로컬 리포지토리에서 .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
--mirror
푸시에서 매우 중요하다 : 이것은 정답이어야한다
git init --bare
나는 지시 사항을 따르기 위해 다른 사람들이 말한 것을 다시 게시하고 있습니다.
저장소 이동 : 새 서버, cd
이제 저장소를 보유 할 상위 디렉토리에 로그인 rsync
하고 이전 서버에서 복사 하는 데 사용 하십시오.
new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
클라이언트가 새 저장소를 가리 키도록하십시오. 이제 사용하는 각 클라이언트에서 이전 원점에 대한 포인터를 제거하고 새 원점에 포인터를 추가하십시오.
client> git remote rm origin
client> git remote add origin user@new.server.com:path/to/repository.git
git remote set-url origin user@new.server.com:path/to/repository.git
GitHub에서이 레시피를 살펴보십시오 : https://help.github.com/articles/importing-an-external-git-repository
나는 발견하기 전에 여러 가지 방법을 시도했다 git push --mirror
.
매력처럼 일했다!
git clone --mirror ...
, git remote add ...
,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
나를 위해 잘 작동했습니다.
이것은 이 답변 에 대한 변형 이며, 현재 gitlab 이 git 저장소를 한 서버에서 다른 서버로 "마이그레이션"하기 위해 제안 합니다.
이전 프로젝트가 폴더에 existing_repo
저장된 이라고 가정 existing_repo
합니다.
새 서버에서 저장소를 작성하십시오. 새 프로젝트의 URL이git@newserver:newproject.git
명령 행 인터페이스를 열고 다음을 입력하십시오.
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 remote set-url --push origin new_repo_url
$ 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
한 번만 사용하십시오 ).
한 원본에서 다른 원본으로 이동하고 로컬 시스템에서 현재 원본의 백업을 유지하려면 다음 단계를 수행하십시오.
이제 폴더에서
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>
위의 명령은 원격 원점을 현재 원점으로 다시 설정합니다. 기존 폴더에 있고 현재 로컬 폴더 이름을 리포지토리 복제를 위해 생성 할 새 폴더와 혼합하지 않기를 원할 때 원합니다. 당신은 방금 밀었습니다.
도움이 되었기를 바랍니다,
하나의 서버에서 새로운 서버로 #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
마스터 지점 (추적 지점 만) 만 새 저장소에 복사합니다.