Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Sind die Implementierungsprinzipien von Git und SVN gleich?

Sind die Implementierungsprinzipien von Git und SVN gleich?

WBOY
WBOYOriginal
2022-01-07 11:04:023001Durchsuche

Die Implementierungsprinzipien von Git und SVN sind unterschiedlich; Git ist ein verteiltes Versionskontrollsystem, SVN ist es nicht. Dies ist der Hauptunterschied zwischen Git und SVN, nicht verteilten Versionskontrollsystemen svn wird im Dateimodus gespeichert.

Sind die Implementierungsprinzipien von Git und SVN gleich?

Die Betriebsumgebung dieses Artikels: Windows 10-System, Git-Version 2.30.0, Dell G3-Computer.

Sind die Implementierungsprinzipien von Git und SVN gleich?

Git ist ein verteiltes Open-Source-Versionskontrollsystem, mit dem jedes kleine oder große Projekt agil und effizient abgewickelt werden kann.

Git ist eine Open-Source-Versionskontrollsoftware, die von Linus Torvalds entwickelt wurde, um die Verwaltung der Linux-Kernel-Entwicklung zu unterstützen.

Git unterscheidet sich von häufig verwendeten Versionskontrolltools wie CVS, Subversion usw. Es verwendet eine verteilte Versionsbibliothek und erfordert keine serverseitige Softwareunterstützung.

1. Der Unterschied zwischen Git und SVN

GIT ist nicht nur ein Versionskontrollsystem, sondern auch ein Content Management System (CMS), Arbeitsmanagementsystem usw.

Wenn Sie eine Person mit Erfahrung in der Verwendung von SVN sind, müssen Sie bestimmte ideologische Änderungen vornehmen, um sich an einige von GIT bereitgestellte Konzepte und Funktionen anzupassen.

Die Unterschiede zwischen Git und SVN:

  • 1. GIT ist verteilt, SVN nicht: Dies ist der Hauptunterschied zwischen GIT und anderen nicht verteilten Versionskontrollsystemen wie SVN, CVS usw.

  • 2. GIT speichert Inhalte als Metadaten, während SVN Inhalte als Dateien speichert: Alle Ressourcenkontrollsysteme verbergen die Metainformationen von Dateien in einem Ordner wie .svn, .cvs usw.

  • 3. GIT-Zweige unterscheiden sich von SVN-Zweigen: Zweige sind in SVN überhaupt nichts Besonderes, sie sind nur ein weiteres Verzeichnis im Repository.

  • 4. GIT hat keine globale Versionsnummer, SVN jedoch schon: Dies ist bisher das größte Feature, das GIT im Vergleich zu SVN fehlt.

  • 5. Die Inhaltsintegrität von GIT ist besser als die von SVN: Der Inhaltsspeicher von GIT verwendet den SHA-1-Hash-Algorithmus. Dies stellt die Integrität des Codeinhalts sicher und reduziert Unterbrechungen des Repositorys bei Festplattenausfällen und Netzwerkproblemen.

2. Git-Prinzipien: Git-Arbeitsbereich, Staging-Bereich und Repository

Grundlegende Konzepte

Lassen Sie uns zunächst die Konzepte von Git-Arbeitsbereich, Staging-Bereich und Repository verstehen.

Arbeitsbereich: Das ist Ihr Verzeichnis, das auf der zu sehen ist Computer.

Temporärer Speicherbereich: auf Englisch Bühne oder Index genannt. Es wird im Allgemeinen in der Indexdatei (.git/index) im „.git-Verzeichnis“ gespeichert, daher nennen wir den temporären Speicherbereich manchmal den Index (Index).

Repository: Es gibt ein verstecktes Verzeichnis .git im Arbeitsbereich. Dies ist nicht der Arbeitsbereich, sondern das Git-Repository.

Die folgende Abbildung zeigt die Beziehung zwischen dem Arbeitsbereich, dem Staging-Bereich im Repository und dem Repository:

Sind die Implementierungsprinzipien von Git und SVN gleich?

Die linke Seite der Abbildung ist der Arbeitsbereich und die rechte Seite ist das Repository. Der mit „Index“ gekennzeichnete Bereich im Repository ist der Staging-Bereich (Stufe, Index), und der mit „Master“ gekennzeichnete Bereich ist der durch den Master-Zweig dargestellte Verzeichnisbaum.

Auf dem Bild können wir sehen, dass „HEAD“ tatsächlich ein „Cursor“ ist, der auf den Hauptzweig zeigt. Daher kann HEAD in dem in der Abbildung gezeigten Befehl durch „master“ ersetzt werden.

Der durch Objekte im Bild identifizierte Bereich ist die Objektbibliothek von Git, die sich tatsächlich im Verzeichnis „.git/objects“ befindet und verschiedene erstellte Objekte und Inhalte enthält.

Wenn der Befehl „git add“ für eine im Arbeitsbereich geänderte (oder hinzugefügte) Datei ausgeführt wird, wird der Verzeichnisbaum im temporären Speicherbereich aktualisiert und gleichzeitig der Inhalt der geänderten (oder hinzugefügten) Datei Der Arbeitsbereich wird in ein neues Objekt in die Objektbibliothek geschrieben und die ID des Objekts wird im Dateiindex des temporären Speicherbereichs aufgezeichnet.

Beim Ausführen einer Festschreibungsoperation (Git Commit) wird der Verzeichnisbaum im temporären Speicherbereich in die Versionsbibliothek (Objektbibliothek) geschrieben und der Hauptzweig wird entsprechend aktualisiert. Das heißt, der Verzeichnisbaum, auf den der Master zeigt, ist der Verzeichnisbaum des temporären Speicherbereichs zum Zeitpunkt der Übermittlung.

Wenn der Befehl „git reset HEAD“ ausgeführt wird, wird der Verzeichnisbaum im Staging-Bereich neu geschrieben und durch den Verzeichnisbaum ersetzt, auf den der Master-Zweig verweist, der Arbeitsbereich wird jedoch nicht beeinträchtigt.

Wenn der Befehl „git rm --cached “ ausgeführt wird, wird die Datei direkt aus dem Staging-Bereich gelöscht und der Arbeitsbereich wird nicht geändert.

Wenn der Befehl „git checkout“ oder „git checkout – “ ausgeführt wird, werden die Dateien im Arbeitsbereich durch alle oder bestimmte Dateien im Staging-Bereich ersetzt. Dieser Vorgang ist gefährlich und löscht Änderungen im Arbeitsbereich, die nicht zum Staging-Bereich hinzugefügt wurden.

Wenn der Befehl „git checkout HEAD“ oder „git checkout HEAD “ ausgeführt wird, werden alle oder ein Teil der Dateien im Master-Zweig, auf den HEAD verweist, verwendet, um die Dateien im Staging-Bereich zu ersetzen der Arbeitsbereich. Dieser Befehl ist außerdem äußerst gefährlich, da er nicht nur die nicht festgeschriebenen Änderungen im Arbeitsbereich, sondern auch die nicht festgeschriebenen Änderungen im Staging-Bereich löscht.

Empfohlenes Lernen: „Git Tutorial

Das obige ist der detaillierte Inhalt vonSind die Implementierungsprinzipien von Git und SVN gleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet commit-m in Git?Nächster Artikel:Was bedeutet commit-m in Git?