Dlaczego ludzie rozwidlają repozytoria w GitHub? [Zamknięte]


110

Zauważyłem, że wiele kont GitHub ma tylko repozytoria, które są rozwidlone z innych kont. Ponadto ludzie, którzy to robią, zwykle nie wnoszą wkładu do rozwidlonych repozytoriów.

Słyszałem o ludziach zbierających znaczki i muszle, ale dlaczego ktoś miałby chcieć zbierać repozytoria? Osobiście rozwinęłbym repozytorium tylko wtedy, gdybym chciał wprowadzić w nim pewne zmiany.


84
chcą zapewnić im stabilne zapasową powinno się właścicielem projektu usunięcia jego repo i znikają
zapadkowy cudo

9
Po prostu dlatego, że tak działają żądania ściągania w GitHub (i ponieważ ludzie są trochę zadowoleni z widelca, a czasem czasem o tym zapominają lub porzucają pomysł na projekt i zapominają o pozbyciu się widelca)
haylem

2
tylko komentarz, ponieważ rozumiem, że używają go jako „kopii zapasowej” kodu, ale zapominają (lub nie wiedzą), że aktualizacje repozytorium nie wpływają na „widelce”, kiedy powinny robić właściwe rozwidlenie (do tworzenia kopii zapasowych) i „Star” repozytorium, aby wiedzieć, kiedy wykonać „ponowne rozwidlenie”, innymi słowy, uważają, że „rozwidlenie” jest prawie takie samo jak „Star” i nieświadomy zachowuje przestarzały kod.
Guilherme Nascimento

1
Ponieważ słyszeli, że posiadanie Githuba wystarczy, aby zostać zatrudnionym przy gorącym starcie.
Gajusz

1
Oto post o szkodach
gavenkoa

Odpowiedzi:


69

W naszej pracy zwykle szukamy przyczyn technicznych, ale moim zdaniem główny powód nie jest techniczny. Jeśli spojrzysz na Pomoc GitHub lub inne samouczki GitHub, rozwidlenie repo jest jednym z głównych kroków, w jaki sposób „robisz” GitHub.

Kiedy ludzie uczą się i oceniają GitHub, prawie każdy samouczek mówi im, aby rozwinęli repozytorium w ramach tego procesu uczenia się. Ponieważ głównym celem GitHub jest przyczynianie się, wiele osób pracujących nad standardowymi samouczkami nie zdaje sobie sprawy, że jeśli chcesz tylko klon tylko do odczytu, nie musisz najpierw robić widelca.


42
Wzdłuż linii z przyczyn nietechnicznych: kilkakrotnie kliknąłem przycisk „widelec”, mając nadzieję, że zobaczę, kto rozwidlił repo, ale okazało się, że rozwidliłem go. Ups! Nie jestem pewien, czy inni zrobili to samo.
gdw2

53
@gdw: Powodując wykrzyknięcie: „Och, widelec!”
Ben Jackson,

1
Pamiętam, kiedy po raz pierwszy dowiedział się o git i Github, zrobiłem trochę rozwidlone tylko dlatego, przewodników i samouczków wydawał się proponować go jako na sposób, aby uzyskać własną kopię kodu na komputerze.
rmac

Używamy GitLab w pracy, więc dobrze znam różnicę między klonem a rozwidleniem. Uważam również, że nie musisz rozwidlać, jeśli nie chcesz wysyłać żądania ściągnięcia (scalenia dla GitLab).
cst1992,

3
@Jesse, dobrze jest to zrobić, ale zwykle nie jest to konieczne. Firma może to zrobić dla kodu, od którego zależy, aby upewnić się, że oryginał nie zniknie nagle. Jeśli wszystko, co chcesz zrobić, to zbudować ze źródła, klon jest prostszy.
Karl Bielefeldt

101

Jak wspomniałeś w swoim pytaniu, ludzie rozwidlają repozytoria, kiedy chcą dokonać zmiany kodu, ponieważ nie masz dostępu do zapisu w oryginalnym repozytorium (chyba że zostałeś dodany jako współpracownik przez właściciela repozytorium).

W rozwidlonym repozytorium mają dostęp do zapisu i mogą wypychać zmiany. Mogą nawet przyczyniać się z powrotem do oryginalnego repozytorium za pomocą żądań ściągania .

Myślę, że istnieje wiele powodów, dla których ludzie rozwidlają repozytoria, ale ich nie zmieniają:

  • mogą rozwidlić repozytorium, które wygląda fajnie, po prostu rozwidlić (ponieważ jest to łatwe (tylko jedno kliknięcie)) i chcą wprowadzić zmiany później (a następnie prawdopodobnie zapomną o tym / nie miały czasu na to)
  • rozwidlają repozytorium, aby dokonać zmiany, a następnie odkrywają, że zmiana jest niepotrzebna, i zapominają usunąć własne repozytorium
  • mogą rozwidlać repozytorium, ponieważ jeden z projektów zależy od innego repozytorium (być może za pośrednictwem submodułów) i chcą całkowitej kontroli nad repozytorium używanym jako zależność (właściciele pierwotnego repozytorium mogą zdecydować się na przejście z github na kod Google itp. )
  • mogą po prostu zapomnieć o wprowadzeniu zmian

5
Kiedy nie korzystasz z Github, idziesz staroświecką trasą i tworzysz lokalną klonowaną kopię projektu, abyś mógł ją zmodyfikować. Forking on github daje dostęp do żądań ściągania, które są preferowane przez wiele projektów. Jeśli pracujesz nad innym projektem, ostatecznie utworzysz łatki i wyślesz je do sprawdzenia.
Rudolf Olah,

Jest to prosty, jednoetapowy proces konfiguracji zdalnego oddziału śledzenia. Każdy, kto próbował przyczynić się do repozytorium git poza GitHub, wie, jak żmudne może być. Ponadto, jeśli oryginalny autor wybierze AFK, możesz śledzić wykres programowania, aby znaleźć widelce, które są nadal aktywnie rozwijane. Mamy nadzieję, że dzięki temu GitHub nie przerodzi się w pustynię martwych projektów w taki sam sposób, jak zrobił to SourceForge.
Evan Plaice

Co jeśli rozwidlisz projekt, ale nie wprowadzisz żadnych zmian. Czy byłoby to uważane za nielegalne?
Jesse

@Jesse Wszystkie publiczne repozytoria w GitHub powinny mieć licencję Open Source (to są ich Warunki świadczenia usług), a zatem nie stanowi żadnego problemu. Zwłaszcza gdy nie wprowadzasz żadnych zmian.
MarcDefiant,

28

Jednym z możliwych powodów: mają działający kod, który zależy od tych projektów, a ich proces kompilacji wymaga pobrania zależności z github. Posiadanie widelca chroni je przed przełamywaniem zmian. W przypadku projektów, które nie oznaczają wersji, jest to najłatwiejszy sposób na osiągnięcie tego.


3
Mogą to naprawić, aby zatwierdzić numer lub opublikowaną wersję wydania wersji aplikacji.
Roman M. Koss

26

Cały sens Github to „kodowanie społeczne” .

Osobiście rozwidlam repozytoria, gdy:

  • Chcę dokonać zmiany.
  • Myślę, że projekt jest interesujący i być może będę chciał go użyć w przyszłości, ale nie mam łatwiejszego sposobu na zapisanie go na później na urządzeniu, którego aktualnie używam.
  • Chcę użyć części lub całości kodu z tego repozytorium jako punktu wyjścia dla mojego własnego projektu.

Teraz słyszałem o ludziach zbierających znaczki i muszle, ale dlaczego ktoś miałby chcieć zbierać repozytoria?

Dlaczego nie?

Nie ma nic (o czym myślę), co mogłoby pójść nie tak z rozwidlaniem repozytoriów dla osobistej przyjemności. Szczerze mówiąc, przechowuję folder ciekawych projektów, które widzę na Github i innych miejscach, wyłącznie w celach inspiracyjnych, a częściowo dlatego, że jestem maniakiem. Rozumiem, że nie muszę rozwidlać projektu, aby odczytać kod, ale w rzeczywistości mogę go edytować w przyszłości.

Teraz zacznij rozwidlać.


9
+1 za „Dlaczego nie?” Sekcja.
Llepwryd

Moje dodatkowe 2 centy za „Dlaczego nie?” sekcja: Mój nawyk polega na tym, że zawsze robię „git push” po zakończeniu pracy nad funkcją; ma dla mnie to zadowalające odczucie QED (czego nie dostaję, gdy wypisuję nazwę pilota i gałęzi). Tak więc zawsze, gdy istnieje choćby najmniejsza szansa, że ​​mogę chcieć wprowadzić zmiany w repozytorium, wolę rozwidlić go, niż później zmienić domyślną repozytorium „origin”.
yoniLavi

1
Myślę, że „dlaczego nie?” sekcja opisuje, jak działa „Gwiazda” ...
TWiStErRob

2
Dlaczego nie po prostu dać gwiazdkę, aby zapisać go do późniejszego obejrzenia?
koleś

2
Gdy projekt jest interesujący, użyłbym gwiazdy. Zgadzam się jednak z resztą.
Roman M. Koss

1

Rozwidlam wiele repozytoriów, z których mógłbym chcieć skorzystać z kodu lub jeśli jest to projekt, który mnie interesuje. Gdy chcę wrócić i po raz kolejny przyjrzeć się kodowi, łatwiej jest znaleźć, jeśli jest wymieniony pod moją repozytoria. Nie muszę wyszukiwać w Google ani błądzić, próbując sobie przypomnieć, jak dokładnie nazywa się ta nazwa, lub zastanawiać się: „gdzie znów zobaczyłem to repo o foo?” Jeśli jest wśród moich repozytoriów, łatwiej jest przypomnieć o tych rzeczach.


Pamiętaj, że możesz uzyskać to samo, grając w repo - nie musisz się do tego rozwidlać.
valiano
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.