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 push --mirror origin
에 git push -f origin
댓글에 나온 것처럼.
이것은 저에게 완벽하게 효과가 있었습니다.
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 --mirror origin
하지만 이것은 당신의 현재 레포의 거울을 만들고 그것을 새로운 위치로 밀어넣는다는 것을 언급해야 합니다.따라서 큰 리포지토리 또는 느린 연결에 시간이 걸릴 수 있습니다.
모든 분기 및 태그를 마이그레이션하려면 다음 명령을 사용해야 합니다.
git clone --mirror [oldUrl]
이전 레포를 모든 분기와 함께 복제합니다.
cd the_repo
git remote add remoteName newRepoUrl
새 리모컨을 설치합니다
git push -f --tags remoteName refs/heads/*:refs/heads/*
모든 참조를 참조/헤드 아래에 밀어넣습니다(아마도 원하는 것일 것입니다).
복사합니다.그것은 정말 그렇게 간단합니다.:)
클라이언트 측에서는 클라이언트의 로컬 보고서에서 .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
저는 다른 사람들이 말한 내용을 간단하게 따라할 수 있는 지침 목록으로 다시 게시하는 것입니다.
리포지토리 이동: 새 서버에 로그인하기만 하면 됩니다.
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
GitHub: https://help.github.com/articles/importing-an-external-git-repository 에서 이 레시피를 살펴보십시오.
발견하기 전에 여러 가지 방법을 시도했습니다.git push --mirror
.
아주 잘 작동했어요!
저는 비트버킷의 지시에 따라 모든 지점이 있는 리포를 이동했습니다.다음은 다음과 같은 설명이 포함된 단계입니다.#
문자:
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 remote add new-origin <GIT URL>
git push --all new-origin
git push --tags new-origin
git remote rm origin
git remote rename new-origin origin
이 답변은 현재 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 origin git://new.url.here
이런 식으로 당신은 그 이름을 유지합니다.origin
새 레포에 대해 - 다른 답변에 자세히 설명된 대로 새 레포로 이동합니다.혼자 작업하고 모든 기능을 사용하여 미러링하고 싶은 로컬 레포가 있다고 가정하면 (로컬 레포 내부에서) 그렇게 할 수 있습니다.
git push origin --mirror # origin points to your new repo
그러나 "git push --mirror"가 저장소를 백업하기에 충분합니까?를 참조하십시오.(일반적으로 사용 안 함)--mirror
단 한 번).
다음 명령을 사용할 수 있습니다.
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 clone --bare <old-repo-url>
cd <old-repo-directory>
git push --mirror <new-repo-url>
git-copy를 사용하여 모든 기록과 함께 repo를 복제할 수 있습니다.
git copy http://a.com/old.git http://a.com/new.git
한 오리진에서 다른 오리진으로 이동하고 현재 오리진의 백업을 로컬 컴퓨터에 보관하려면 다음 단계를 사용할 수 있습니다.
- 먼저 이동할 (git) 폴더로 로컬 이동
- 온라인으로 새 리포지토리 만들기 이 단계에서는 코드를 푸시할 수 있는 리포지토리를 만듭니다.
이제 폴더에서 실행합니다.
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
마스터 분기(추적 분기만)만 새 리포지토리에 복사합니다.
비고:
git copy http://a.com/old.git http://a.com/new.git
예를 들어 github에서 github 복사본, 즉 동일한 git 시스템에 남아 있는 경우에만 작동합니다.예를 들어 github에서 gerrit로 복사할 때는 이것이 작동하지 않습니다.
그 외에도 분기, 태그, 서브모듈을 자동으로 복사하기 때문에 매우 편안합니다.
언급URL : https://stackoverflow.com/questions/1484648/how-to-migrate-git-repository-from-one-server-to-a-new-one
'programing' 카테고리의 다른 글
HttpContent 사용 방법을 찾을 수 없습니다. (0) | 2023.05.01 |
---|---|
일반 이전 CLR 개체 대 데이터 전송 개체 (0) | 2023.05.01 |
datetime 매개 변수를 전달하는 방법은 무엇입니까? (0) | 2023.05.01 |
재정의에 대한 모범 사례는 동일: 및 해시입니다. (0) | 2023.05.01 |
현재 분기에 커밋되지 않은 변경사항이 있을 때 다른 분기 체크아웃 (0) | 2023.05.01 |