GitHub 리포지토리의 포크 종속성 삭제


206

GitHub가 내 리포지토리가 원래 다른 프로젝트의 포크라는 것을 잊거나 분리시키는 방법은 무엇입니까?

GitHub에서 프로젝트를 분기했습니다. 나는 이제 "어디서나 무엇이든 갈래"를 볼 수 있습니다. 상위 리포지토리 "whatever / whatever"는 더 이상 유지되지 않습니다. 독립 저장소를 작성하기 위해 원래 저장소의 코드 기반을 계속 사용할 수 있습니다.

원래 저장소에서 프로젝트를 분리하는 방법이 있습니까?

답변:


175

github 지원에 연락 하여 리포지토리를 "정상 모드"로 전환하도록 요청할 수 있습니다 .

이 페이지 , 단락 "포크에 만들어진 커밋", 하나의 스위치 지원을 통해 이동해야한다는 것을 설명한다. 따라서 (스스로 그렇게 할 수있는 방법은 없습니다 가능성이 당신이 파괴되기 전에 ... 설명 당신의 repo를 다시하지 않는 한 티켓을하거나 같은 위키 프로젝트에 장착되어있는 경우 그렇게주의 경우 것입니다 삭제하십시오!).


31
나는 그에게 연락 지원이 완벽하게 작동 확인할 수 있습니다, 플러스 그들은 종종 :-) 시간 만에 답장
BenC

1
링크 된 페이지에는 더 이상 언급 된 정보가 없습니다.
Kara Brightwell

3
@MattBrennan 페이지가 변경되었지만 마지막 섹션에는 "포크를 분리하여 GitHub.com 또는 GitHub Enterprise의 독립형 저장소로 바꾸려면 각각 GitHub 지원 또는 사이트 관리자에게 문의하십시오."
Thomas Moulard

1
초고속 .. 그들은 1 시간 만에 대답했다. 감사합니다
myDoggyWritesCode

2
Github Enterprise의 경우 관리자-> 협업-> 네트워크에서 찾을 수 있으며 사용 사례에 따라 'Make Root', 'Detach'또는 'Extract'를 사용해야합니다.
Kutzi September

45

github UI에서 분기 저장소를 분기 저장소없이 새 저장소에 복제 한 다음 원래 분기를 제거 할 수 있습니다.

  • github에 로그인
  • 를 선택하십시오 오른쪽 상단에서 + 부호를 하고 가져 오기 저장소를 선택하십시오 .
  • 분기 저장소를 가져 오십시오. 새 리포지토리에는 포크 종속성이 없습니다.
  • 저장소 설정에서 분기 된 원래 저장소를 삭제하십시오.

1
이것은 가장 쉽고 그것이 나를 위해 일한 것입니다 :). 매우 영리한.
moxi

1
다른 사람이 가져 오기 기능 "hanging"에 문제가 있습니까? Mine은 약 5 시간 동안 "프로젝트 버전 관리 시스템 감지 중 ..."에있었습니다. 대기 중인지 또는 실제로 중단되었는지 확실하지 않습니다. 레포는 작습니다. 내가 줄을서는 경우를 대비하여 밤새도록 유혹하고 있습니다.
Benjamin West

마침내 궁금해서 "취소"를 클릭했습니다. 취소를 클릭하면 VCS 감지를 건너 뛰고 코드 / 커밋 / 분기 등을 가져올 수 있습니다. Github-> Github를 가져올 때의 경우입니다. 다른 VCS에서 온 경우 가져 오기가 중단되지 않았을 수 있습니까? 확실하지 않다. 또한 두 번째 리포지토리 로이 작업을 수행 할 때 참고하십시오. 작동하려면 두 번 취소해야했습니다. CLI가 더 나은 방법 일 수있는 동일한 데이터를 모두 복사하지만이 경로를 선택한 다른 사람에게 도움이되기를 바랍니다.
Benjamin West

9
분명히하기 위해이 접근 방식은 문제를 유지하고 요청을 가져 오지 않습니다.
golopot

매력처럼 작동합니다! 당신은 생명의 은인 감사합니다! :)
omnimind

44

로컬 리포지토리에 중요한 분기 및 태그가 모두 있는지 확인하고 github 리포지토리를 삭제하고 일반적인 방법 (포킹 없음)을 통해 리포지토리를 다시 만든 다음로 로컬 리포지토리를 다시 푸시하십시오 git push --all. 게시하지 않으려는 로컬 분기가있는 경우 작업을 위해 임시 클린 로컬 클론을 생성하는 것이 좋습니다.

그러나 이것은 위키와 이슈도 제거 할 것입니다. 위키는 실제로 자체 저장소이므로이를 복제 한 후 다시 작성하고 푸시하여 유사하게 처리 할 수 ​​있습니다. 리포지토리 주소는 위키의 Git Access 페이지 ( git@github.com:user/repo.wiki.git)에 있습니다.

이것은 문제를 남긴다. API를 통해 내보낼 수 있습니다 있지만 내가 아는 한 사람과 만 문제와 의견을 만들 수 있으므로 완벽하게 가져 오는 것은 불가능합니다.

따라서 문제를 보존해야하는 경우 Thomas Moulard가 제안한대로 github 지원을 수행해야합니다.


문제가 몇 개인 지에 따라 웹에서 이전 문제를 삭제하기 전에 문제를 하나씩 새 저장소로 전송할 수 있습니다 ( help.github.com/en/github/managing-your-work-on- github /… ). 결정된 개인이 시간당 100 개 이상의 이슈를 전송할 수 있다고 생각합니다. 재미는 아니지만 많은 리포지토리의 경우 가능한 일입니다.
수마

22

비슷한 문제가 발생 하여이 github 도움말 페이지 를 사용하여 문제 를 해결했습니다. 다른 사용자가 친절하게 개발 한 테마를 사용하는 블로그의 위키와 이슈 트래커에 대해서는 신경 쓰지 않았습니다.

전체 기록을 잃지 않고 여러 번 커밋 한 후 분기 된 저장소를 분리하고 자신의 저장소로 사용하려면 다음을 수행하십시오.

git clone --bare git@github.com:user/forked_repo.git

new-repositorygithub 웹 사이트에서 빈 저장소 를 새로 만듭니다 . 그리고 미러 버전을 푸시하십시오.

cd user.github.com.git/

git push --mirror git@github.com:user/new-repository.git

하나는 github에서 이름을 바꿀 수 forked_repository있으며 다른 이름은 백업으로 유지하고 필요한 경우 업데이트를 확인할 수 있습니다. 또는 단순히 삭제하십시오.

이름 new-repository을 원래 이름으로 바꾸면 작업이 수행됩니다. 부작용으로 커밋이 내역에 나타납니다.


11

이것은 github.com이 아닌 GitHub Enterprise에만 적용됩니다.

관리자 권한이있는 계정으로 로그인했습니다 :

  1. 분리해야하는 저장소로 이동하십시오. https://<ghe url>/<org>/<repo>
  2. 오른쪽 상단 모서리에있는“사이트 관리자”로켓을 클릭하십시오
  3. 상단 메뉴 표시 줄에서 "협업"을 클릭하십시오
  4. 왼쪽 창에서 "네트워크"를 클릭하십시오
  5. 네트워크 구조 창에서 "루트 만들기"를 클릭하십시오
  6. 동의하기

이것은 GitHub Enterprise 2.9에서 테스트되었습니다.


사용 사례에 따라 '분리'또는 '추출'이 더 적합 할 수 있습니다. 기본적으로 현재 루트-> 자식 방향을 반전시키기 때문에 'Make Root'는 조금 이상합니다. (Github Enterprise 2.17)
Kutzi

10

aurelienClayton 의 정보를 사용하여 다음과 같이 할 수있었습니다.

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

다음은 설명서입니다git clone --bare .

베어 Git 리포지토리를 만듭니다. 즉, <directory>에 관리 파일 을 만들어 배치하는 대신 자체 파일을 <directory>/.git로 만드 <directory>십시오 $GIT_DIR. 작업 트리를 확인할 곳이 없기 때문에 이것은 분명히 -n을 의미합니다. 또한 리모콘의 분기 헤드는로 매핑되지 않고 해당 로컬 분기 헤드로 직접 복사됩니다 refs/remotes/origin/. 이 옵션을 사용하면 원격 추적 분기 나 관련 구성 변수가 만들어지지 않습니다.

다음은 설명서입니다git push --mirror .

대신 밀어 각 REF 네이밍, 심판 미만임을 지정 refs/(을 포함하지만 이에 한정되지 않고 refs/heads/, refs/remotes/, 및 refs/tags/)는 원격 저장소에 미러링 될 수있다. 새로 생성 된 로컬 참조는 원격 끝으로 푸시되고 로컬로 업데이트 된 참조는 원격 끝에서 강제로 업데이트되며 삭제 된 참조는 원격 끝에서 제거됩니다. 구성 옵션 remote.<remote>.mirror이 설정된 경우 이것이 기본값 입니다.

참고 : 다른 git기반 답변 git과 마찬가지로 위키 및 문제와 같이 리포지토리에 속하지 않은 문제는 복사하지 않습니다 . 타 피오 당 :

  • 위키는 별도의 git repo이며 Tapio마다 비슷한 방식으로 처리 할 수 ​​있습니다. 주소는 다음과 같습니다 git@github.com:user/repo.wiki.git.
  • 이슈는 GitHub API를 통해 내보낼 수 있지만 사용자 만 만들 수 있기 때문에 다시 만드는 데 문제가 있으므로 가져 오기에서 정보가 손실됩니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.