GitHub: utwórz widelec jako „własny projekt”

118

Znalazłem fajny projekt GitHub, który bardzo rozbudowałem. Uważam, że moje zmiany są dobre, ponieważ działają. Wygląda jednak na to, że oryginalny autor nie miał czasu, aby przejrzeć te zmiany i uwzględnić je. W rzeczywistości jest nawet możliwe, że funkcje, których potrzebuję i zaimplementowałem, nie są w wizji pierwotnego autora i po prostu dążymy do innych celów. Nie wiem, ponieważ nigdy nie otrzymałem od niego odpowiedzi.

To powiedziawszy, widziałem, że mój wkład nie jest liczony na mojej mapie zatwierdzeń. Dzieje się tak, o ile oryginalne repozytorium nie przyjmuje moich wkładów. Co więcej, moja praca jest uznawana tylko za pracę i nie przyciąga innych ludzi z taką samą wizją jak ja. To jest dla mnie większy problem, ponieważ wiele osób pyta o te funkcje.

Nadal oferuję swój wkład w oryginalny projekt, ale wydaje mi się, że jest mało prawdopodobne, aby kiedykolwiek został zaakceptowany. Teraz chciałbym, aby mój widelec był „prawdziwym projektem”. Chociaż planuję w pewnym momencie zsynchronizować się z oryginalnym projektem, chcę zmienić jego nazwę i zmotywować innych do udziału w moim projekcie. Ponadto bardzo chciałbym, aby GitHub pokazał, że ten projekt jest aktywnie utrzymywany (mówiąc o mapie zatwierdzeń). I na koniec chciałbym zrobić odpowiednie wydania tego.

Jak mogę to zrobić i dobrze, aby mój widelec był pełnoprawnym projektem?

chrześcijanin
źródło
Jestem zdezorientowany, może coś się zmieniło od 2014 roku, ale mój projekt TightBlog jest wymieniony jako widelec Apache Roller w lewym górnym rogu: github.com/gmazza/tightblog , ale wszystkie moje problemy są dla mnie pełne , PR itp., Mimo że żadna praca nie jest stosowana do głównego projektu Apache Roller, ale tylko do mojego forka: ( github.com/gmazza?tab=overview&period=monthly ). Nie jestem już pewien, co można zyskać, robiąc widelec jako samodzielny projekt.
Glen Mazza

Odpowiedzi:

75

Aby odłączyć widelec i przekształcić go w samodzielne repozytorium na GitHub, skontaktuj się z pomocą techniczną GitHub .

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/#commit-was-made-in-a-fork

Oleh Prypin
źródło
9
Takie postępowanie zachowa również obserwatorów gwiazd, obserwatorów i sieć wideł. W przeciwieństwie do tworzenia nowego repozytorium od podstaw.
Johnco,
1
Warto zauważyć, że obsługa GitHub dała mi wybór między reparenting child fork lub przechowywanie ich w moim własnym repozytorium.
gmarmstrong
41

Aby to zrobić, musisz zduplikować repozytorium . Krótka wersja to:

  1. Utwórz nowe repozytorium na GitHub.
  2. Sklonuj rozwidlone repozytorium, które chcesz odłączyć od jego rodzica.
  3. Wypchnij wszystkie gałęzie w tym klonie do nowego repozytorium.
cdhowie
źródło
Jeśli chcesz, aby Twoje repozytorium nadal miało tę samą nazwę, prawdopodobnie możesz sklonować swoje repozytorium, usunąć je na GitHub, utworzyć nowy projekt o tej samej nazwie i przesłać wszystko.
Rory O'Kane
12
Wygląda na to, że żądania ściągnięcia GitHub mogą dotyczyć tylko rozwidleń projektu GitHub. Więc jeśli zduplikujesz repozytorium, nie możesz wysyłać żądań ściągnięcia z nowego repozytorium. A jeśli usuniesz i zastąpisz swoje stare repozytorium, wszystkie istniejące żądania ściągnięcia zostaną prawdopodobnie zamknięte, ponieważ GitHub uzna, że ​​kod został usunięty i nie będzie można tworzyć nowych żądań ściągnięcia.
Rory O'Kane
9
Głosowanie w dół, ponieważ może to wprowadzać ludzi w błąd do wykonywania niepotrzebnych działań. Zamiast tego należy zaakceptować odpowiedź Oleha: najlepszym sposobem jest skontaktowanie się z pomocą techniczną GitHub. Przekształcenie widelca w samodzielne repozytorium zajęło mniej niż godzinę.
Georgii Ivankin
5

To bardzo proste:

  1. Sklonować się gdzieś repo: git clone [email protected]:USERNAME/REPOSITORY.git(upewnij się, że masz podwójne on sklonowany)
  2. Usuń repozytorium w GitHub (Ustawienia> Opcje> Usuń to repozytorium)
  3. Utwórz nowe puste repozytorium w GitHub
  4. git remote set-url origin [email protected]:USERNAME/NEW_REPOSITORY.git(jeśli użyłeś tej samej nazwy dla repozytorium, to NEW_REPOSITORY== REPOSITORY👍🏻)
  5. git push
  6. 🙌🏻

(Używam ssh, ale jeśli używasz https, twoje adresy github będą wyglądać https://github.com/USERNAME/REPOSITORY.git)

Gerbus
źródło
1

Najpierw powinieneś sprawdzić, czy licencja na to pozwala, ogólnie rzecz biorąc, Open Source wymusza to, ponieważ chodzi o ewolucję oprogramowania bez łańcuchów. Jeśli tak, po prostu utwórz nowe repozytorium. Nie zapomnij podać nazwiska oryginalnych autorów i rozpocząć projekt.

jethroo
źródło
3
Jest na licencji MIT i tak, planuję dawać kredyty jak zwykle. Właściwie wolałbym, aby oryginalny autor po prostu zaakceptował mój kod (lub powiedział mi, dlaczego tego nie robi)
Christian
1
Jeśli licencja nie pozwala na utworzenie repozytorium, które nie jest rozwidleniem GitHub oryginału, to projekt nie powinien być przede wszystkim publicznym projektem GitHub, ponieważ projekty publiczne mają być wydawane na licencji open source . Nie przychodzi mi do głowy żadna licencja open source, która zabrania kopiowania kodu. O to właśnie chodzi w open source. (Oczywiście mogą istnieć wymagania dotyczące atrybucji - ale można je spełnić bez projektu będącego „właściwym” widelcem GitHub.)
cdhowie
Autor z pewnością powinien uczynić swój projekt wolnym oprogramowaniem, ale jeśli tego nie zrobi (na przykład, jeśli nie ma licencji), projekt jest niewolny: stackoverflow.com/a/16934573/6791398
gmarmstrong