Was bedeuten diese Wörter in Git: Repository, Fork, Branch, Clone, Track?

130

Die Semantik hier ist mir ehrlich gesagt nicht klar. Es geht nur um Kopien / Varianten einer Code + History-Einheit, aber darüber hinaus bin ich mir nicht sicher, ob ich das sagen kann. Wird diese logische Struktur irgendwo erklärt?

Eric Anderson
quelle
5
Ich würde empfehlen, die ersten Kapitel des Pro Git-Buches ( progit.org/book ) zu lesen .
Ewall
61
+1. Viele der Git-Tutorials zeigen Ihnen, wie Sie bestimmte Aufgaben ausführen, ohne zu erklären, was bestimmte Wörter bedeuten oder wie Git funktioniert. Nach einer Ressource zu fragen, die sich mit diesem Thema befasst, ist eine berechtigte Frage.
Daniel Stutzbach
14
Ich wünschte, ich könnte +1 Daniels Kommentar mehr. Während die Bedeutung einiger Begriffe (z. B. Repository) offensichtlich sein sollte, ist ihre Beziehung nicht immer (Zweig vs. Gabel), und die wahre Bedeutung wird von jemandem, der an ein zentrales VCS gewöhnt ist, leicht falsch interpretiert. Schauen Sie sich außerdem Pro Gits "Was ist ein Zweig?" An. Abschnitt - Möchte ein einfacher Benutzer wirklich etwas über Blobs und Bäume wissen, oder möchte er nur qualitativ wissen, was ein Zweig ist?
Cascabel
1
@DanielStutzbach Es ist möglich, Kommentare zu Dingen abzugeben, die im Buch nicht klar sind. (Ich kenne nicht die richtige Terminologie, um das zu sagen.) Ich habe das getan, ich habe gesagt, dass das Buch definieren muss, was ein Repository ist. Ich stimme zu, dass es ziemlich schwierig ist, konzeptionelles Material von Leuten zu bekommen, die etwas sehr gut verstehen. Dieses Buch befasst sich (derzeit) mit Datenbanken, ohne zu definieren, was sie in diesem Zusammenhang sind, und sagt nichts darüber aus, was Repositorys sind.
user34660

Antworten:

146

Ein Repository ist einfach ein Ort, an dem der Verlauf Ihrer Arbeit gespeichert wird. Es befindet sich häufig in einem .gitUnterverzeichnis Ihrer Arbeitskopie - einer Kopie des neuesten Status der Dateien, an denen Sie arbeiten.

Um ein Projekt zu verzweigen (nehmen Sie die Quelle zu einem bestimmten Zeitpunkt aus dem Repository einer anderen Person und übernehmen Sie Ihre eigenen abweichenden Änderungen daran), klonen Sie das Remote-Repository, um eine Kopie davon zu erstellen, und führen Sie dann Ihre eigene Arbeit in Ihrem lokalen Repository aus Änderungen festschreiben.

Innerhalb eines Repositorys haben Sie Zweige, die effektiv Gabeln in Ihrem eigenen Repository sind. Ihre Zweige haben ein Vorfahren-Commit in Ihrem Repository und weichen mit Ihren Änderungen von diesem Commit ab. Sie können Ihre Zweigänderungen später zusammenführen. Mit Zweigen können Sie mehrere unterschiedliche Funktionen gleichzeitig bearbeiten.

Sie können auch einzelne Zweige in Remote-Repositorys verfolgen. Auf diese Weise können Sie Änderungen aus den Zweigen einer anderen Person übernehmen und diese zu einem eigenen Zweig zusammenführen. Dies kann nützlich sein, wenn Sie und ein Freund gemeinsam an einer neuen Funktion arbeiten.

Es sind viele tolle Git-Bücher online. Schauen Sie sich zunächst ProGit und Git Magic sowie die offiziellen Tutorials und das Community-Buch an.

nfm
quelle
Natürlich ist das Lesen der F-Handbücher und Tutorials von grundlegender Bedeutung. Aber das scheint mir eine großartige Zusammenfassung des ganzen Materials zu sein. Sehr geschätzt!
Brasofilo
Beachten Sie, dass Sie Ihr lokales Arbeitsverzeichnis in einen neuen Zweig wechseln können ("git checkout <new_branch>"). In diesem Fall werden die Dateien Ihres lokalen Arbeitsverzeichnisses durch den Inhalt des Zweigs ersetzt, zu dem Sie wechseln. Aber Sie verlieren Ihre Arbeit nicht: Git speichert alle festgeschriebenen Änderungen ("git commit"), die Sie am vorherigen Zweig vorgenommen haben, in der Git "-Datenbank" (versteckter .git-Ordner) und lässt Sie Ihre Dateien zurückschalten.
KrisWebDev
3
Ich denke, es bedarf besonderer Erwähnung, dass das Gabeln und Verzweigen in der Vergangenheit, unabhängig davon, welches VCS Sie verwendet haben, als zwei getrennte Dinge angesehen wurden. Die Verzweigung wurde als günstige und implizite Vereinbarung zwischen den Entwicklern angesehen. Forking war schwerwiegender, da es implizierte, dass die Entwickler, die an einem Projekt arbeiteten, sich in einigen Dingen nicht einig waren und beschlossen, sich zu trennen. Erfolgreiche Gabeln wurden dann in der Regel später wieder zu einem Projekt zusammengeführt, nachdem beide Seiten eine Einigung erzielt hatten. Seitdem haben Git (und GitHub) diese Begriffe verwischt und beide Begriffe repräsentieren im Grunde die gleiche Idee, aber auf unterschiedliche Weise.
Redteam316
Ein Repository enthält also nicht die Dateien für das Projekt? Sie sagen einen Ort, an dem die Geschichte Ihrer Arbeit gespeichert ist . Ist das alles? Nur die Geschichte der Dateien, aber nicht die Dateien selbst?
user34660
13

Ich werde meine eigene Frage mit einem RTFM beantworten.

Aber lesen Sie dieses schöne Handbuch. Wie der Autor es ausdrückt:

„Die Schlussfolgerung, die ich daraus ziehe, ist, dass man Git nur dann wirklich verwenden kann, wenn man versteht, wie Git funktioniert. Nur zu merken, welche Befehle Sie zu welchen Zeiten ausführen sollten, wird kurzfristig funktionieren, aber es ist nur eine Frage der Zeit, bis Sie stecken bleiben oder, schlimmer noch, etwas kaputt machen.

„Die Hälfte der auf Git vorhandenen Ressourcen verfolgt leider genau diesen Ansatz: Sie führen Sie durch die Befehle, die wann ausgeführt werden sollen, und erwarten, dass Sie gute Ergebnisse erzielen, wenn Sie diese Befehle nur nachahmen. Die andere Hälfte geht alle Konzepte durch, aber nach allem, was ich gesehen habe, erklären sie Git auf eine Weise, die davon ausgeht, dass Sie bereits verstehen, wie Git funktioniert. “

Eric Anderson
quelle
Diese Einführung scheint auf sbf5.com/~cduan/technical/git verschoben worden zu sein . Die ursprüngliche URL funktioniert vorerst noch.
Eric Anderson
1
Dies gilt im Kontext. Wenn Sie sofort produktiv sein oder einfach nur Code einchecken müssen, ist es in Ordnung, kein tiefes Verständnis dafür zu haben, wie Git funktioniert. Die Tutorials sind in Ordnung. So bin ich zu git gekommen. Wenn Sie jedoch fortgeschrittener sein müssen, z. B. zum Erstellen von Zweigen, Verzweigen, Rebase und anderen fortgeschritteneren Aufgaben, müssen Sie wissen, wie Git funktioniert, insbesondere wenn sich Ihr Hintergrund in einer zentralen Quellcodeverwaltung befindet.
Phil
3

Dieser GoogleTechTalk ist eine fantastische Einführung in Git, um zu erfahren, was tatsächlich hinter den Kulissen passiert, während Sie gleichzeitig die Sprache lernen. Es wurde von einem sehr frühen Mitwirkenden an Git gegeben und er hielt diesen Vortrag 2007 als Einführung in Git. Wenn Sie diesen Vortrag sehen, wissen Sie nicht nur, was jedes Wort ist, wie Repository, Gabel, Zweig usw., sondern Sie wissen auch, was sich hinter den Kulissen abspielt, wenn jedes dieser Wörter erstellt, zusammengeführt usw. wird.

Die Adresse ist lang, aber sehr informativ. Es stellt Git auch anderen Versionskontrollsystemen gegenüber, sodass Sie einen Einblick erhalten, warum Git so erstellt wurde, wie es war, und welche komparativen Vorteile es gegenüber anderen Steuerungssystemen hat. Obwohl das Gespräch alt ist, ist es sehr hilfreich, es in Betrieb zu nehmen. Ich würde mir das ansehen, bevor ich in die Handbücher sprang. Ich glaube, die Dinge werden dadurch viel sinnvoller.

Matt
quelle