2012-09-13 2 views
5

현재 Google 팀의 Git 저장소 호스팅 서비스 옵션을 평가하고 있습니다. GitHub을 사용하는 것이 부분적이지만, 대신 Atlassian의 Stash를 사용하고자하는 이유가있을 수 있습니다.Git 호스트 마이그레이션

Git을 사용하면 호스팅 서비스에서 다른 저장소로 리포지토리와 그 기록을 복사 할 수 있습니까? 이 일을하는 데 어려움이 있습니까? 우리가 한 공급자를 내려 가서 나중에 전환해야한다고 결정하면 우리가 잃을 것이 무엇입니까?

나는 Git에 대한 일반적인 대답에 관심이있다. 그러나 GitHub와 GitHub 사이에서 특별히 마이그레이션하려고 시도 할 때 잃어 버리게 될 데이터의 일부 문제 (단지 소스 버전 기록 일 필요는 없음) Atlassian 스택?

감사합니다,

== 업데이트 (V2) ==

그냥 내가 사용하여 Github에서에 내가 은닉에서 한 클론에서 이렇게 밀어 성공적으로 않았고, 후속 조치 :

git clone --mirror ssh://[email protected]:8080/Stash/Project.git MyGithubProject 
cd MyGithubProject 
git remote set-url origin [email protected]:MyGithubOrg/MyGithubProject.git 
git push --mirror origin 

그리고 분기를 포함하여 예상되는 모든 기록을 유지했습니다.

+1

당신이 모든 것을 얻을 자식 저장소 복제 할 때 - 즉 자식의 포인트입니다 - 당신이 –

+0

을 원하는만큼 여러 번 이동 할 수 있어야하지만 새 저장소로 복제 할 수 있습니다? 예를 들어, GitHub를 살펴보면 로컬 컴퓨터에서 시작한 저장소를 기반으로 새 저장소를 만드는 방법을 볼 수 없습니다. SSH를 통해 이동할 수있는 서버에 액세스 할 수 있는지 이해하지만 Stash 또는 GitHub와 같은 호스트 서비스를 사용할 때의 제한 사항에 대해 특히 우려하고 있습니다. 나는 단지 기본적인 것을 오해 할 수도 있습니다. 우려가 어리 석거나 질문이 의미가 없다면 나를 바로 잡으십시오. –

+1

모든 git 리포지토리가 동일하게 생성됩니다 (더 많거나 적음). 당신의 상자에있는 하나의 저장소는 github에있는 것과 동일한 저장소입니다. 따라서 새 리모콘으로 새 리모콘을 설정하고 브랜치를 다른 리모컨으로 밀어 넣으면 다른 두 리모컨과 동일하게됩니다. – Dan

답변

3

조, 귀하의 의견에 따라, 질문은 자식의 맥락에서 많은 의미가 없습니다. 저장소의 모든 복제에는 저장소의 전체 히스토리가 들어 있습니다. GitHub의에

  1. 모든 git hooks 설치 : 그것은 당신이 서비스를 변경 한 경우 당신이 다시 필요할 것 세 가지가 서면. 이것들은 저장소와 함께 저장되지 않습니다 (복제 된 저장소의 경우). 그러나 버전을 제어 할 수없는 이유가 없으므로 모든 서비스에서 쉽게 다시 작성할 수 있습니다. 이것은 또한 좋은 습관입니다. 버전 제어로 관심있는 모든 것.

  2. 사용자는 저장소에 액세스 할 수있는 권한이 있습니다. 분명히 서비스 변경은 개발자가 해당 서비스에 대한 계정을 가져 와서 회사 저장소를 볼 수있는 권한을 얻게 될 것임을 의미합니다.

  3. 개인 개발자 리포지토리. 귀하의 회사 레포의 포크는 분명히 새로운 서비스에서 다시 만들어야 할 필요가 있습니다. 그러나 일단 -2-를 끝내고 -1-를 염두에두면 사소한 작업이됩니다. 다윗이 대답 할 때처럼 쉽게 할 수 있습니다.

2

방금 ​​두 개의 다른 리모컨으로 이것을 테스트하고 이전 버전을 제거하고 새로 추가하여 커밋 기록을 잃지 않았습니다.

+0

"new"를 어떻게 추가 했습니까?나는 이것이 내가 서버를 소유하고있는 곳이라면 모든 것이 간단하게 작동한다는 것을 알았지 만, 기존의 프로젝트를 호스팅하는 서비스 중 하나를 사용하여 새로운 프로젝트를 어떻게 뿌릴 것인지 잘 모르겠습니다. 고마워, –

+1

새 서비스에서 저장소를 만든 다음 저장소의 Git URL을 현재 다른 서비스의 원격 저장소가있는 작업 저장소에 원격 저장소로 추가하십시오. "git add github url.git"- url.git은 새 저장소의 URL이고 github은 리모컨의 이름입니다. 그런 다음 "git remove origin"을 사용하여 이전 리모컨을 제거하고 모든 브랜치를 푸시 할 수 있습니다. –