programing

기존 repo의 분기에서 새 GitHub repo를 만들려면 어떻게 해야 합니까?

subpage 2023. 7. 8. 10:53
반응형

기존 repo의 분기에서 새 GitHub repo를 만들려면 어떻게 해야 합니까?

저는 마스터 지점과 신규 프로젝트 지점이 있습니다.이제 새로운 프로젝트 지점을 기반으로 마스터와 함께 새로운 레포를 만들고 싶습니다.

배경:세 개의 독립적인 응용프로그램을 포함하는 하나의 리포지토리가 있습니다.이런 식으로 시작된 게 아닙니다.레포에는 원래 앱이 하나밖에 없었습니다.그러나 시간이 지남에 따라 비즈니스 요구사항이 변화했습니다.하나의 앱이 두 개가 되었습니다(레거시 버전과 다시 쓰기).웹 서비스가 추가되었습니다.세 개의 프로젝트를 포함하기 위해 별도의 분기가 사용되었습니다.하지만, 그들은 어떤 코드도 공유하지 않습니다.따라서 이러한 데이터를 자체 저장소로 분할하는 것이 더 간단합니다.

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

  1. 리포인 허브를 만듭니다.
  2. cd를 추출할 이전 repo의 로컬 복사본으로 이동합니다. 이 복사본은 new-repo의 마스터가 될 new-project 분기를 추적하도록 설정됩니다.
  3. $ git push https://github.com/accountname/new-repo.git +new-project:master

새 깃허브 레포가 완료되었습니다.결과는 다음과 같습니다.

  • new-repo라는 이름의 새 Github 저장소,
  • 의 집입니까?master이전 레포의 새 프로젝트에 해당합니다.
  • 모든 역사가 보존된

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

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

그 결과 기존 사이트3a 분기도 새 레포로 이동되고 레일3로 나타납니다.이것은 정말 잘 작동합니다. 네트워크 다이어그램은 새 마스터레일 3을 전체 이력과 서로 정확한 관계로 보여줍니다.

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

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

cd를 old_dll 및 다음을 포함하는 로컬 repo로 이동합니다.

$ git push https://github.com/accountname/new_repo.git +old_branch:master
  1. github에서 NEW_REPOITORY를 생성합니다.
  2. cd OLD_REPOITORY
  3. git push https://github.com/accountname/NEW_REPO +master:master

이상입니다. (참고: git 내역 보존)

위의 답변을 시도해 본 결과 +master:master를 지정하지 않았기 때문에 충분히 구체적이지 않다는 것을 알게 되었습니다. 이것이 제가 그것을 작동시키는 데 필요한 것입니다.잘 작동합니다.

소스(github의 SSH 문제를 방지하기 위해 수정한 내용 포함):Mauricio Aiello, 전 Java 수석 개발자, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a-branch-in-an-existing-repository

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

GitHub 내에서 레포를 "포크"한 다음 복제본의 관리 탭으로 이동할 수 있습니다.리포지토리 이름 및 "가시성" 아래에는 분기 드롭다운 메뉴가 있는 "기본 분기"가 있습니다.선택하세요.new-project.

편집: 방깨았어요달금요라는 것을 깨달았습니다.master 입니다."기본" 분기뿐만 아니라 설정할 분기입니다.그래서...

  • GitHub 복제them/repoyou/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
  • 처럼, 에서 보면, 설것처럼명한지내서에역만하지서에위▁as▁the▁within서내에▁but,지역▁from럼.copy합니다.master원하는 곳으로 분기합니다.
  • 프로젝트 빈 GitHub 프만기들로트you/copy에 따라 를 GitHub의 합니다.copymaster그리고 당신은 끝났어요!

이것이 좋은 방법인지는 잘 모르겠지만 어쨌든 쉽습니다.

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

그런 다음 새 평판 허브를 만든 다음 푸시합니다.

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

메인이 아닌 다른 지점을 원하신다면 이렇게 하시면 됩니다.

  1. 새 풍선 Github 만들기
  2. 이전 repo의 CD(나의 경우, 나는 이전 repo와 복사할 지점에 있습니다)
  3. git push https://github.com/your_username/new-repo.git +from_old_repo: the_main_or_repo_new_repo에서 _main_or_repo_repo.

이전 보고서에서 새 보고서로 분기를 복사했습니다(메인이 아닌 다른 분기로 푸시되었습니다. 콜론 뒤에 입력하는 내용에 따라 다릅니다(3단계의 BOLD 부분).

SourceTree를 사랑하는 경우 간단한 단계를 수행하십시오.

  1. 새 레포로 복제할 브랜드 확인

  2. 소스 트리의 도구 모음에서 터미널 버튼을 클릭하여 이 브랜드에서 터미널 열기

  3. 터미널에 명령을 내립니다.$ git push https://github.com/accountname/new_repo.git

위의 Alexey Kislitsin의 답변에 기초한 git 명령.

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

반응형