Warum teilen Leute Repositories auf GitHub mit? [geschlossen]

110

Mir ist aufgefallen, dass viele GitHub- Accounts nur Repositories haben, die von anderen Accounts abgeleitet sind. Außerdem leisten die Leute, die dies tun, normalerweise keine Beiträge zu den gespaltenen Depots.

Ich habe von Leuten gehört, die Briefmarken und Muscheln sammeln, aber warum sollte jemand Repositories sammeln wollen? Persönlich würde ich ein Repository nur verzweigen, wenn ich einige Änderungen daran vornehmen wollte.

Aadit M Shah
quelle
84
Sie möchten sicherstellen, dass sie ein stabiles Backup haben, falls der Besitzer des Projekts seine Repos löscht und verschwindet
Ratschenfreak
9
Einfach, weil Pull-Requests in GitHub so funktionieren (und weil die Leute ein bisschen verzweifelt sind und es dann manchmal vergessen oder ihre Projektidee aufgeben und vergessen, die
Verzweigung
2
Nur ein Kommentar, wie ich verstehe, verwenden sie als "Backup" des Codes, aber sie vergessen (oder wissen nicht), dass Updates des Repositorys die "Forks" nicht beeinflussen, wenn sie richtige Forks (für Backups) machen sollen und "Star" ist das Repository, um zu wissen, wann ein "Rebork" durchgeführt werden muss. Mit anderen Worten, "Fork" ist fast dasselbe wie "Star" und es ist nicht bekannt, ob ein veralteter Code vorhanden ist.
Guilherme Nascimento
1
Weil sie gehört haben, dass ein Github ausreicht, um bei einem heißen Start angestellt zu werden.
Gaius
1
Hier ist ein Beitrag über den Schaden des grundlosen Gabelns zbowling.github.io/blog/2011/11/25/github
gavenkoa

Antworten:

69

In unserer Arbeit suchen wir in der Regel nach technischen Gründen, aber meiner Meinung nach ist der Hauptgrund nicht technischer Natur. Wenn Sie sich die GitHub-Hilfe oder andere GitHub-Tutorials ansehen , ist das Forken eines Repos einer der wichtigsten Schritte, um GitHub zu "tun".

Wenn Leute GitHub lernen und evaluieren, werden sie in fast jedem Tutorial dazu aufgefordert, ein Repo als Teil dieses Lernprozesses zu forken. Da der Hauptzweck von GitHub darin besteht, einen Beitrag zu leisten, wissen viele Leute, die die Standard-Tutorials durcharbeiten, nicht, ob Sie nur einen Nur-Lese-Klon wollen, und müssen nicht erst einen Fork machen.

Karl Bielefeldt
quelle
42
In Anlehnung an nicht-technische Gründe: Ich habe mehrmals auf den Gabelknopf geklickt, um zu sehen, wer das Repo gegabelt hat, und festgestellt, dass ich es gegabelt habe. Hoppla! Ich bin mir nicht sicher, ob andere dasselbe getan haben.
gdw2
53
@gdw: Weil du ausrufst: "Oh, Gabel!"
Ben Jackson
1
Ich erinnere mich , als ich zum ersten Mal über git und Github gelernt, ich einige Forking tat nur , weil Führer und Tutorials schien es , als vorzuschlagen , die Art und Weise Ihre eigene Kopie des Codes auf Ihrem Computer zu erhalten.
rmac
Wir verwenden GitLab bei der Arbeit, daher kenne ich den Unterschied zwischen Klon und Fork gut. Ich bin auch der Meinung, dass Sie keine Verzweigung benötigen, wenn Sie keine Pull-Anforderung (Zusammenführung für GitLab) ausgeben möchten.
cst1992
3
@ Jesse, das ist in Ordnung, aber in diesem Fall normalerweise unnötig. Ein Unternehmen kann dies für den Code tun, von dem es abhängig ist, um sicherzustellen, dass das Original nicht plötzlich verschwindet. Wenn Sie nur aus dem Quellcode erstellen möchten, ist ein Klon einfacher.
Karl Bielefeldt
101

Wie Sie in Ihrer Frage erwähnt haben, geben die Mitarbeiter Repositorys an, wenn sie den Code ändern möchten, da Sie keinen Schreibzugriff auf das ursprüngliche Repository haben (es sei denn, Sie wurden vom Eigentümer des Repositorys als Mitbearbeiter hinzugefügt).

Im Forked-Repository haben sie Schreibzugriff und können Änderungen pushen. Sie können mithilfe von Pull-Anforderungen sogar einen Beitrag zum ursprünglichen Repository leisten .

Ich denke, es gibt mehrere Gründe, warum die Leute Repositorys aufteilen, diese aber nicht ändern:

  • Möglicherweise geben sie ein Repository an, das cool aussieht, geben es einfach an (weil es einfach ist (nur ein Klick)) und möchten später eine Änderung vornehmen (und dann wahrscheinlich vergessen / hatten sie keine Zeit dafür).
  • Sie teilen ein Repository mit, um eine Änderung vorzunehmen, und stellen dann fest, dass die Änderung nicht erforderlich ist, und vergessen, das eigene Repository zu löschen
  • Sie können ein Repository aufteilen, da eines der Projekte von einem anderen Repository abhängt (möglicherweise über Submodule) und sie möchten die vollständige Kontrolle über das als Abhängigkeit verwendete Repository haben (die Besitzer des ursprünglichen Repository könnten entscheiden, von Github zu Google Code zu wechseln usw.). )
  • Sie könnten einfach vergessen, die Commits zu pushen
MarcDefiant
quelle
5
Wenn Sie Github nicht verwenden, gehen Sie auf die herkömmliche Route und erstellen eine lokal geklonte Kopie des Projekts, damit Sie es ändern können. Beim Forking auf Github haben Sie Zugriff auf Pull-Anforderungen, die von vielen Projekten bevorzugt werden. Wenn Sie in einem anderen Projekt arbeiten, werden Sie Patches erstellen und diese zur Überprüfung einsenden.
Rudolf Olah
Das Einrichten eines Remote-Tracking-Zweigs ist ein einfacher Vorgang in einem Schritt. Jeder, der versucht hat, zu einem Git-Repository außerhalb von GitHub beizutragen, weiß, wie mühsam es sein kann. Wenn der ursprüngliche Autor AFK verwendet, können Sie dem Entwicklungsdiagramm folgen, um Gabeln zu finden, die noch aktiv entwickelt werden. Es bleibt zu hoffen, dass GitHub nicht wie SourceForge zu einem Ödland toter Projekte verkommt.
Evan Plaice
Was ist, wenn Sie ein Projekt verzweigen, aber keine Änderungen vornehmen? Wäre das illegal?
Jesse
@Jesse Alle öffentlichen Repositories auf GitHub sollten eine Open Source-Lizenz haben (das sind ihre Nutzungsbedingungen) und daher überhaupt kein Problem. Vor allem, wenn Sie keine Änderungen vornehmen.
MarcDefiant
28

Ein möglicher Grund: Sie haben laufenden Code, der von diesen Projekten abhängt, und ihr Erstellungsprozess beinhaltet das Abrufen der Abhängigkeiten von Github. Die Gabel schützt sie vor brechenden Veränderungen. Für Projekte, die keine Versionen markieren, ist dies der einfachste Weg, dies zu erreichen.

Michael Borgwardt
quelle
3
Sie können festlegen, ob die Nummer oder die veröffentlichte Version der Release-Version einer App festgeschrieben werden soll.
Roman M. Koss
26

Der ganze Punkt von Github ist "soziale Kodierung" .

Persönlich gabele ich Repositories, wenn:

  • Ich möchte eine Änderung vornehmen.
  • Ich denke, das Projekt ist interessant und möchte es möglicherweise in Zukunft verwenden, habe aber keine einfachere Möglichkeit, es für das spätere Gerät zu speichern, das ich derzeit verwende.
  • Ich möchte einen Teil oder den gesamten Code in diesem Repository als Ausgangspunkt für mein eigenes Projekt verwenden.

Jetzt habe ich von Leuten gehört, die Briefmarken und Muscheln sammeln, aber warum sollte jemand Repositories sammeln wollen?

Warum nicht?

Es gibt nichts (woran ich denken kann), was schief gehen könnte, wenn man Repositories zum persönlichen Vergnügen gabelt. Ehrlich gesagt, ich halte einen Ordner mit interessanten Projekten, die ich auf Github und anderen Orten sehe, nur zu Inspirationszwecken und teilweise, weil ich ein Geek bin. Ich verstehe, dass ich das Projekt nicht verzweigen muss, um den Code zu lesen, aber ich möchte das möglicherweise in Zukunft tatsächlich bearbeiten.

Jetzt fang an zu forken.

Dynamisch
quelle
9
+1 für das "Warum nicht?" Sektion.
Llepwryd
Meine zusätzlichen 2 Cent auf das "Warum nicht?" Abschnitt: Meine Gewohnheit ist es, immer "git push" zu machen, nachdem ich mit der Arbeit an einem Feature fertig bin. es hat das für mich befriedigende QED-Gefühl (das ich nicht bekomme, wenn ich den Remote- und Branchennamen ausschreibe). Wenn es also die geringste Chance gibt, dass ich Änderungen am Repo vornehmen möchte, ziehe ich es vor, dies zu tun, anstatt später das Standard-Repo "origin" ändern zu müssen.
YoniLavi
1
Ich denke das "Warum nicht?" Abschnitt beschreibt , wie „Star“ funktioniert ...
TWiStErRob
2
Warum geben Sie ihm nicht einfach einen Stern, um ihn für die spätere Anzeige zu speichern?
Geck
2
Wenn ein Projekt interessant ist, würde ich einen Stern verwenden. Ich stimme dem Rest allerdings zu.
Roman M. Koss
1

Ich habe viele Repos, für die ich den Code verwenden möchte, oder wenn es sich um ein Projekt handelt, an dem ich interessiert bin. Wenn ich später noch einmal einen Blick auf den Code werfen möchte, ist es einfacher zu finden, ob er unter meinem aufgeführt ist Repositories. Ich muss nicht googeln oder herumtollen, um mich an den genauen Namen zu erinnern, oder mir überlegen, wo ich das Repo über foo wieder gesehen habe. Wenn es zu meinen Repos gehört, ist es einfacher, sich an diese Dinge zu erinnern.

ChrisDR
quelle
Beachten Sie, dass Sie das gleiche Ergebnis erzielen könnten, wenn Sie das Repo in der Hauptrolle spielen.
Valiano