Jak rozwidlić własne repozytorium na GitHub?

164

Mam publiczne repozytorium w serwisie GitHub. Chcę go powielić / skopiować i pracować nad nowym projektem w oparciu o to repozytorium, ale nie chcę wpływać na to, jak jest teraz. Próbowałem rozwidlić go za pomocą interfejsu użytkownika GitHub, ale nic to nie dało.

WowBow
źródło
4
Co dokładnie próbujesz osiągnąć? Może możesz to rozwiązać, po prostu rozgałęziając?
Artefact2,
4
Chcę uzyskać kopię projektu i rozszerzyć ten projekt, aby zrobić coś innego, ale bez wpływu na oryginalny projekt. To było to. Jakikolwiek sposób, jego rozwiązanie.
WowBow
1
@ Artefact2 .. Przepraszam, myślałem, że rozwiązanie firmy mcepl spełniło moją potrzebę, ale tak się nie stało. Po sklonowaniu projektu przy użyciu „git clone” nie chcę wskazywać oryginalnego repozytorium, ale nowe repozytorium na github, które utworzyłem. Jak mogę to osiągnąć?
WowBow
1
@ Artefact2 Czy otrzymałeś moje pytania?
WowBow
1
Zaletą fork w porównaniu do tworzenia nowego repozytorium jest to, że wykresy i historia sieci są ze sobą połączone. Szkoda, że ​​Github na to nie pozwala.
kenchew

Odpowiedzi:

205

Nie sądzę, że możesz rozwidlić własne repozytorium.
Sklonuj go i wypchnij do nowego repozytorium jest dobre, ale musisz:

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(zobacz git push)

Zobacz cały proces opisany w „ Rozwidlaj swój własny projekt w serwisie GitHub ”.


Sześć lat później (2016) masz teraz importera GitHub, który umożliwia importowanie repozytorium z innego źródła ... w tym GitHub.
Zobacz „ Importowanie repozytorium za pomocą narzędzia GitHub Importer

https://help.github.com/assets/images/help/importer/import-repository.png

NARF jest odpowiedź (upvoted) ilustrują także, że proces.

Umożliwi to utworzenie nowego repozytorium i zaimportowanie pełnej historii starego do nowego, korzystając z adresu URL GitHub.

Ponownie: otrzymujesz kopię, a nie prawdziwy fork: nie możesz wykonać żądania ściągnięcia z nowego repozytorium do starego.

Ponownie (BIS), jak podano w komentarzach przez mpersico, to nie PRAWDA wideł.

Jeśli mam foo, które jest kanonicznym repozytorium źródeł dla projektu open source, które chcę, aby inni ludzie widzieli i mieli dostęp do PR, to nie chcę pracować w tym repozytorium, chcę forka, którego mogę użyć do wydania odpowiednie PR przeciwko mojemu projektowi.
Rozwiązałem to, tworząc drugie konto w GitHub i rozwidlając to.

VonC
źródło
Dzięki @VonC. Myślę, że zapomniałeś wspomnieć o edycji pliku konfiguracyjnego.
WowBow,
1
Mówiłem o .git / config. O ile nie zmienisz pierwotnego adresu URL, kiedy powiesz „git remote add…”, zostanie odrzucony, ponieważ nazwa pochodzenia już istnieje. Ale kiedy zmieniłem adres URL w pliku konfiguracyjnym, działa dobrze. Artykuł, który mi wskazałeś, to pokazuje.
WowBow,
7
@WowBow, jeśli remotejuż istnieje, wykonaj git remote set-url origin https://github.com/userName/New_Repo. To zmieni .git/configplik dla Ciebie. Zobacz git-scm.com/docs/git-remote
VonC,
1
@aus, które jest oczekiwane, abyś mógł pobierać z nadawcy. Zobacz stackoverflow.com/a/33360766/6309
VonC
1
Nadal uważam, że rozwidlanie z repozytorium w tej samej organizacji powinno być dozwolone. A co, jeśli istnieje centralne repozytorium, które jest ogólne dla wszystkich i chcesz otrzymywać z niego aktualizacje przez cały czas, a jednocześnie wprowadzać określone zmiany w swojej rozwidlonej kopii w zależności od potrzeb?
Prachi
107

Super łatwy sposób na zrobienie tego w 30 sekund ze strony GitHub:

  1. Skopiuj adres URL repozytorium. Np .: https://github.com/YourName/YourOldRepo(wskazówka: to adres URL, gdy patrzysz na stronę główną repozytorium na github.
  2. Kliknij +ikonę w prawym górnym rogu.
    https://i.stack.imgur.com/9zJgo.png
  3. Wybierz „Importuj repozytorium”.
  4. Tam, gdzie prosi o „Stary adres URL”, wklej adres URL skopiowany w kroku 1
    https://i.stack.imgur.com/vgWd3.png
  5. Wpisz nazwę nowego repozytorium i kliknij Begin Import.
  6. Otóż ​​to! Masz teraz kopię pełnego repozytorium, z całą historią zatwierdzeń i gałęziami!

Ograniczenia: to właściwie nie jest prawdziwy widelec. To kopia repozytorium. Nie pozwoli na wykonywanie żądań ściągnięcia w tę iz powrotem.

narF
źródło
4
Zapomniałem o GitHub Importer (wydanym w 2016 roku) w mojej starej odpowiedzi z 2010 roku: dodałem odniesienie do tego narzędzia i do Twojej odpowiedzi.
VonC
4

Po prostu sklonuj go, utwórz nowe puste repozytorium i prześlij do niego.

mcepl
źródło
1
Dzięki. Za dużo myślałem.
WowBow
Sklonowałem go na moją maszynę lokalną i utworzyłem puste repozytorium, ale kiedy próbuję uzyskać źródło pochodzenia github.com/userName/New_Repo.git .. mówi, że zdalne źródło już istnieje. Jak mam to rozwiązać?
WowBow
A teraz, kiedy naciskam, zmienia się oryginalne repozytorium.
WowBow
Czy możesz mi powiedzieć, jak przejść do nowego repozytorium? Zrobiłem klon i utworzyłem nowe repozytorium, ale nie mogłem przejść do nowego repozytorium.
WowBow
5
Musisz zmienić piloty. W przeciwnym razie spróbuje przepchnąć się w to samo miejsce. git remote rm originnastępniegit remote add origin URL-to-new-repository
wadesworld
1

Postępowałem zgodnie z tymi oficjalnymi instrukcjami dotyczącymi „Powielania repozytorium” i wydawało się, że działa.

https://help.github.com/articles/duplicating-a-repository/

Aby utworzyć duplikat repozytorium bez rozwidlania, należy uruchomić specjalne polecenie klonowania w stosunku do oryginalnego repozytorium i wypchnąć kopię lustrzaną do nowego. Działa to z każdym repozytorium git, nie tylko z tymi hostowanymi na GitHub.

phocks
źródło
1

Przyjęte rozwiązanie VonC niestety nie zadziałało tak, jak dostałem

zdalny: nie znaleziono repozytorium

Co zadziałało, było następujące:

  1. Utwórz new_repo na github
  2. git clone new_repo
  3. cd new_repo
  4. git remote dodaj upstream old_repo.git
  5. git pull upstream master
  6. git push origin master

Mam stąd wszystko powyższe .

Nacięcie
źródło
1

Dla osób nie znających się na technologii korzystających z GitHub, oto jedno proste rozwiązanie jako alternatywa dla innych świetnych odpowiedzi powyżej. Potrzebujesz tylko aplikacji GitHub Desktop.

  1. Otwórz własne repozytorium projektu z przeglądarki i pobierz jako plik zip, np your-project-master.zip.
  2. Rozpakuj i zmień nazwę na nowe repozytorium.
  3. Otwórz GitHub Desktop i dodaj nowe repozytorium, przeglądając je w rozpakowanej ścieżce lokalnej nowe repozytorium. wprowadź opis obrazu tutaj
  4. Opublikuj go na swoim githubie, klikając przycisk publikowania. Nie zapomnij dodać nazwy i opisu :)
Zuzu Softman
źródło
-1

Właśnie spróbowałem i zadziałało:

  1. Podziel repozytorium na konto organizacji
  2. Zmień nazwę
  3. Przenieś własność z powrotem na siebie
Dominykas Blyžė
źródło
4
Fajny pomysł, ale ja po prostu próbowałem i mam błąd: aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spiers
dzieje się
shadowbq
-1

Kiedy tworzysz nowe repozytorium, możesz importować dane z innego repozytorium za pomocą adresu URL repozytorium .git. Zajęło mi to 30 sekund.

Gino
źródło