Ich gehe nur auf das, was ich auf SO gelesen habe, also vergib mir, aber alles, was ich gelesen habe, besagt, dass ein großer Vorteil von Git gegenüber Subversion darin besteht, dass Git dem Entwickler den gesamten Quellcode lokal zur Verfügung stellt, ohne irgendetwas tun zu müssen der Server.
Mit meiner eingeschränkten Verwendung von SVN und TortoiseSVN hatte ich den gesamten Quellcode, oder zumindest dachte ich, dass ich das getan habe. Zum Beispiel habe ich eine Website. Ich lade es auf SVN hoch. Ich betreibe meine Website immer noch lokal, nicht wahr? Wenn jemand eine Änderung einreicht und ich nicht verbunden bin, spielt es keine Rolle, ob ich Git habe oder nicht, bis ich mich wieder mit dem Server verbinde.
Ich verstehe nicht. Ich bitte nicht um eine Wiederholung von einem gegen den anderen außer diesem einen Punkt.
Antworten:
Die Prämisse, die Sie in Frage stellen, ist wirklich falsch:
Sowohl mit Subversion als auch mit Git haben Sie Ihren Quellcode lokal. Mit Git haben Sie sowohl Ihren Quellcode als auch ein Repository auf Ihrem lokalen Rechner.
Es geht so etwas.
Subversion:
Ihr Code <-> Das Repository
Git:
Ihr Code <-> Ihr lokales Repository <-> Ein Remote-Repository (... <-> ein anderes Remote-Repository usw.)
Ein Vorteil dieser Struktur besteht darin, dass Sie die Quellcodeverwaltung weiterhin verwenden und Ihre lokalen Änderungen in Ihrem lokalen Repository festschreiben können, ohne die Arbeit anderer Teammitglieder (mit denen Sie das Remote-Repository gemeinsam nutzen) zu stören.
Mit Subversion müssten Sie entweder das Risiko eingehen, den Build für andere zu brechen, oder eine längere lokale Entwicklung ohne jegliche Quellcodeverwaltung zu erleiden, die mit einem riesigen Commit (oder eher einem Revert) endet.
Auf der anderen Seite können Sie mit Git diese Änderungen in Ihr lokales Repository übernehmen, Protokolle und Unterschiede anzeigen oder Ihre Änderungen vornehmen und nur dann, wenn Sie der Meinung sind, dass es bereit ist, mit dem Team geteilt zu werden, die Änderungen vom lokalen Repository übertragen Repository auf das entfernte.
quelle
Git oder Mercurial speichern Ihr gesamtes Repository lokal mit allen Revisionen und benannten Zweigen. Subversion speichert nur eine - normalerweise die Head Revision. So können Sie mit Git und Mercurial auf das vollständige Repository (dh Ihren aktuellen Quellcode und dessen Verlauf) zugreifen, auch wenn Ihr Netzwerk mit SVN zusammenbricht. Sie sind auf die letzte Revision beschränkt, auf die Sie aktualisiert haben.
quelle
Die kurze Antwort lautet: Mit git haben Sie Ihren gesamten Quellcode, mit subversion haben Sie die neueste Version Ihres Quellcodes.
Git speichert lokal eine Kopie des gesamten Verlaufs Ihres Repositorys. Bei Subversion befindet sich die gesamte Historie auf einem Server.
quelle
Ich denke, Sie werden feststellen, dass bei SVN alle Ihre Aktionen eine Kommunikation mit dem Server erfordern, während dies bei GIT nicht der Fall ist. Wenn Sie mit SVN verzweigen möchten, verzweigen Sie auf dem Server und ziehen diesen Zweig herunter. Mit GIT können Sie eine lokale Zweigstelle erstellen, ohne dass der "Server" davon Kenntnis hat.
Sie sagen zu Recht, dass Sie den Quellcode sowohl mit SVN als auch mit GIT haben, aber mit GIT muss es keinen zentralen Server geben, der auch den Quellcode enthält. Mit GIT sind Sie möglicherweise die EINZIGE Person mit dem Quellcode und können dennoch alle Funktionen ausführen, die Sie mit einem typischen VCS ausführen würden.
Ich habe Argumente gegen GIT gehört, und ich denke, dass dies bei Ihrer Frage hilfreich sein kann. Da Sie nicht verpflichtet sind, sich auf ein zentrales Repo festzulegen, besitzen Sie Ihren Quellcode, bis Sie ihn festgeschrieben und auf Ihren Server übertragen haben, falls du hast ein. Mit SVN kann die Versionskontrolle nur durch Festschreiben auf dem Server erfolgen. Mit GIT können Sie jedoch möglicherweise alles auf Ihrem lokalen Computer belassen, und wenn etwas schief geht, können Sie "alles verlieren", obwohl dies genauso einfach möglich ist Verlieren Sie alle Ihre Änderungen mit SVN, wenn Sie kein Commit durchgeführt haben und Ihre Festplatte ebenfalls abgestürzt ist.
quelle
Wenn Sie täglich pushen, sollte das Risiko gering sein. Wenn Sie jedoch gezwungen sind, täglich einen Commit für den SVN-Server durchzuführen, können Sie am Ende des Tages alle Änderungen in einem einzigen großen Änderungssatz vornehmen, der nicht jede Änderung in kleine Schritte unterteilt. Mit git werden Sie aufgefordert, mehrere kleine Commits zu tätigen. Wenn beim Verschieben eine Zusammenführung erforderlich ist, versuchen Sie, sie zusammenzuführen und zu verschieben. Wenn Sie derzeit keine Zusammenführung durchführen können, können Sie einen Push in eine neue Filiale oder ein anderes Repository auf dem Server ausführen.
quelle