기존 리포지토리의 지점에서 새 GitHub 리포지토리를 생성하려면 어떻게해야합니까?
나는이 마스터 와 새로운 프로젝트 지점. 이제 새로운 프로젝트 브랜치를 기반으로 마스터와 함께 새로운 레포를 만들고 싶습니다.
배경 : 세 개의 독립적 인 응용 프로그램을 포함하는 하나의 저장소가 있습니다. 이런 식으로 시작하지 않았습니다. 원래 리포에는 하나의 앱만있었습니다. 그러나 시간이 지남에 따라 비즈니스 요구 사항이 변경되었습니다. 하나의 앱이 두 개의 버전 (레거시 버전 및 재 작성)이되었습니다. 웹 서비스가 추가되었습니다. 세 가지 프로젝트를 포함하기 위해 별도의 지점이 사용되었습니다. 그러나 코드를 공유하지 않습니다. 따라서 자신의 저장소로 분리하는 것이 더 간단합니다.
@ user292677의 아이디어로 시작하여 문제를 해결하기 위해 수정했습니다.
- github에서 새로운 저장소 를 만듭니다 .
- 추출하려는 이전 리포지토리의 로컬 사본으로 cd하십시오. 이는 새로운 리포지토리 의 마스터 가 될 새 프로젝트 분기 를 추적하도록 설정되어 있습니다.
$ 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
완료됩니다!
- github에서 NEW_REPOSITORY를 만듭니다.
- cd OLD_REPOSITORY
- 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 "복제 또는 다운로드"풀다운 메뉴에서 가져 오기
'IT' 카테고리의 다른 글
MySQL의 테이블 이름은 대소 문자를 구분합니까? (0) | 2020.06.10 |
---|---|
Git에서 커밋되지 않은 변경 사항 및 git diff를 자세히 표시하는 방법 (0) | 2020.06.10 |
파이썬으로 이메일을 보내는 방법? (0) | 2020.06.10 |
속성과 속성의 차이점은 무엇입니까? (0) | 2020.06.10 |
Homebrew로 수식을 업데이트하려면 어떻게합니까? (0) | 2020.06.10 |