IT

기존 리포지토리의 지점에서 새 GitHub 리포지토리를 생성하려면 어떻게해야합니까?

lottoking 2020. 6. 10. 07:58
반응형

기존 리포지토리의 지점에서 새 GitHub 리포지토리를 생성하려면 어떻게해야합니까?


나는이 마스터새로운 프로젝트 지점. 이제 새로운 프로젝트 브랜치를 기반으로 마스터와 함께 새로운 레포를 만들고 싶습니다.

배경 : 세 개의 독립적 인 응용 프로그램을 포함하는 하나의 저장소가 있습니다. 이런 식으로 시작하지 않았습니다. 원래 리포에는 하나의 앱만있었습니다. 그러나 시간이 지남에 따라 비즈니스 요구 사항이 변경되었습니다. 하나의 앱이 두 개의 버전 (레거시 버전 및 재 작성)이되었습니다. 웹 서비스가 추가되었습니다. 세 가지 프로젝트를 포함하기 위해 별도의 지점이 사용되었습니다. 그러나 코드를 공유하지 않습니다. 따라서 자신의 저장소로 분리하는 것이 더 간단합니다.


@ user292677의 아이디어로 시작하여 문제를 해결하기 위해 수정했습니다.

  1. github에서 새로운 저장소만듭니다 .
  2. 추출하려는 이전 리포지토리의 로컬 사본으로 cd하십시오. 이는 새로운 리포지토리 의 마스터 가 될 프로젝트 분기 를 추적하도록 설정되어 있습니다.
  3. $ git push https://github.com/accountname/new-repo.git +new-project:master

새로운 Github 저장소가 완성되었습니다. 결과는 다음과 같습니다.

  • 라는 새 Github의 저장소 새로운 REPO ,
  • master대응 이전의 repo의에 새로운 프로젝트
  • 모든 역사가 보존되었습니다.

실제로이 방법을 사용하면 원하는대로 이름이 바뀐 직접 선택한 지점을 사용하여 새 리포지토리를 만들 수 있습니다.

$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3

결과적으로 기존 site3a 브랜치도 이제 새로운 리포지토리옮겨 지고 rails3로 나타납니다 . 네트워크 다이어그램은 새로운 마스터레일 3 을 전체 히스토리와 서로 정확한 관계로 보여줍니다 .

2013-12-07 업데이트 : 다른 프로젝트와 함께이 레시피가 여전히 작동하는지 확인했습니다.

2018-01-11 업데이트 : https 프로토콜에 GitHub 권장 사항을 사용하도록 3 단계를 업데이트했습니다. 레시피는 여전히 작동합니다.


최신 정보:

old_branch를 포함하는 로컬 저장소로 cd 및 :

$ git push https://github.com/accountname/new_repo.git +old_branch:master

git clone -b new-project /path/to/repo /new/repo/path

편집 : GitHub 내에서 리포지토리를 "포크"한 다음 클론의 관리 탭으로 이동할 수 있습니다. “리포지토리 이름”과“가시성”아래에는 지점 드롭 다운 메뉴가있는“기본 지점”이 있습니다. 를 선택하십시오 new-project.

재 편집 : master방금 "기본"분기가 아니라 설정하려는 분기 임을 깨달았습니다 . 그래서…

  • GitHub에서로 복제 them/repo하십시오 you/repo.
  • 운영 git clone git@github.com:you/repo.git
  • 시작하십시오 gitk.
  • [ old-master이전 커밋을 추적하지 않도록 분기 를 만들고 싶을 수도 있습니다 .]
  • new-project지점에서 가장 최근의 커밋을 찾아서 커밋 메시지를 마우스 오른쪽 버튼으로 클릭 한 다음 "여기에 마스터 브랜치 재설정"을 선택하십시오. (을 사용하여 명령 줄 에서이 작업을 수행 할 수도 git-reset있지만 올바른 호출을 찾지 못했습니다.)

다음 GitHub 리포지토리로의 푸시는 --force옵션 으로 수행해야 하지만 그렇지 않으면 완료됩니다.

그것이 자신의 저장소 중 하나라면 당신은 이것을하기 위해 ...

  • 운영 git clone git@github.com:you/orig.git
  • 운영 git clone orig copy
  • 위에서 설명한 것처럼 로컬 copy리포지토리에서 master분기를 원하는 위치로 다시 설정하십시오 .
  • 빈 GitHub 프로젝트를 만듭니다 you/copy. GitHub의 지시에 따라 해당 프로젝트를 로컬 버전의 리모컨으로 설정하고을 (를 copy) 누르면 master완료됩니다!

  1. github에서 NEW_REPOSITORY를 만듭니다.
  2. cd OLD_REPOSITORY
  3. git push https://github.com/accountname/NEW_REPO + master : master

그리고 그게 다야. (참고 : git history가 보존 됨)

위의 답변을 시도했지만 + master : master를 지정하지 않았기 때문에 충분히 구체적이지 않은 것으로 나타났습니다. 잘 작동합니다.

출처 (github의 ssh 문제를 피하기 위해 수정 한 내용) : Mauricio Aiello, 전 Java 수석 개발자, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a 기존 리포지토리 지점


이것이 좋은 방법인지 확실하지 않지만 어쨌든 쉽습니다.

git clone -b new-project git@github.com:User/YourProject.git newProjcet

그런 다음 github에서 새 저장소를 만들고 밀어 넣으십시오.


단순히 새 저장소를 만들면 이전 저장소에 대한 참조가 없어지고 새 프로젝트와 동기화 된 원래 프로젝트에 대한 업데이트를 유지하기가 더 어려워집니다. 아마도 레포를 포크하는 것이 낫지 않습니까?


정답에 약간의 추가 :

$ git push git@github.com : 계정 이름 / new_repo + old_branch : master

"git@github.com : accountname / new_repo"=> github "복제 또는 다운로드"풀다운 메뉴에서 가져 오기

참고 URL : https://stackoverflow.com/questions/9527999/how-do-i-create-a-new-github-repo-from-a-branch-in-an-existing-repo

반응형