dedlfix: Was ist der Unterschied zwischen Branch, Fork und Clone bei Github?

Beitrag lesen

Tach!

ich fange gerade an mich mit GitHub zu beschäftigen und mir ist noch nicht so 100% klar, was der Unterschied zwischen Branch, Fork und Clone ist.

Also nicht nur mit GitHub sondern auch mit Git. Dazu wäre neben den Erläuterungen der angefragten Begriffe noch zu sagen, dass GitHub nur ein Hoster für mit Git verwaltete Projekte ist. Wenn du nicht vorhast, ein öffentliches Repository zu erstellen, oder die Dienstleistungen für private Repositorys in Anspruch zu nehmen, kannst du Git auch ohne GitHub verwenden. Du solltest also unterscheiden, was ein Leistungsmerkmal von Git ist, und welche Funktionalität zusätzlich von GitHub angeboten wird.

Ich habe ein paar Anfänger Tutorials gemacht und habe es bisher so verstanden, dass man bei eigenen Projekten einen Branch vom Master erstellen muss, damit die Masterdateien nicht ohne Genehmigung verändert werden können.

Bei eigenen Projekten hast du damit keine Not. Branchen kann man in eigenen Projekten nach Lust und Laune. Auch in Clonen von anderen Projekten kann man im Prinzip beliebig branchen oder im Hauptzweig arbeiten. Wenn man allerdings Updates des geclonten Repositorys bekommen möchte, nimmt man das besser als Submodule ins eigene Projekt. Beim Mitarbeiten kommt es darauf an, ob man die GitHub-Gegebenheiten berücksichtigen muss, oder nicht.

Wenn ich an einem fremden Projekt mitwirken möchte, muss ich es "forken".

Nur wenn es ein GitHub-Repository ist, und du noch nicht soweit involviert bist, Schreibrechte für das Repo zu bekommen, aber gern deine Änderungen vorstellen möchtest. Ansonsten ist ein Forken nicht notwendig, und bei anderswo gehosteten Repositorys auch nicht unbedingt vorhanden.

Dann kann ich es runterladen und es ist das gleiche wie Klonen?

Git arbeitet ja dezentral, und jede Kopie eines Repositorys ist ein Clone. Wenn du also ein GitHub-Repository forkst und dann eine lokale Kopie erstellen möchtest, dann ist das ein Clone deines Forks. Man muss auch nicht separat herunterladen, denn das ist beim Clonen inbegriffen, wenn man ein irgendwo (also auch bei GitHub) gehostetes Repository als Quelle für den Clone-Vorgang angibt.

Erst wenn man ein Projekt "geforked" hat, kann man Dateien die man runtergeladen und bearbeitet hat auch hochladen ("committen") und diese als Änderungs Vorschlag (Pull request) einreichen.

Ja, man braucht Schreibrechte, um Pushen zu können. Die hast du bei deinem Fork, kannst sie aber auch für das eigentliche Repository bekommen.

  • Eigenes Projekt bearbeiten: Branch erstellen
  • Fremdes Projekt bearbeiten: Forken

Eigene Projekte kannst du beliebig bearbeiten, einen Branch brauchst du dafür nicht notwendigerweise.

dedlfix.