Git ist ein verteiltes Versionskontrollsystem, das sich in einigen Eigenschaften von traditionellen Versionskontrollsystemen unterscheidet.
== Auf bestehendes SVN aufsetzen ==
Beachten wir den ersten Vorteil, dann braucht man sich nicht wundern, dass das erste Klonen des SVN Repositories etwas länger dauert.
Um so mehr freuen wir uns, wenn wir die Dateigrößen betrachten. Vergleichen wir ein Projekt mit 2800 Revision. SVN Checkout meldet 45 MB. Bei Git sind es nur 18 ;)
== Gesamte Versionsgeschichte ==
Jeder Benutzer besitzt eine lokale Kopie der gesamten Projektgeschichte. Es ist kein zentraler Server notwendig. Mit SVN kann man lediglich die letzte Revision einer Datei wiederherstellen. Weil Git außerdem mit Kompression arbeitet macht die Dateigröße einer kompletten Historie oft nur einen Bruchteil der Größe eines SVN Checkouts aus.
== Offline Commits ==
Muss man mehrere abhängige Änderungen gemeinsam übertragen bleibt einem bei SVN nichts anderes übrig als alle Änderungen in einer Commit Nachricht zusammenzufassen. Oft kann man gar nicht mehr alle Änderungen nachvollziehen. Git löst dieses Problems. Mit Git kann man alle Commits sammeln und mit einem finalen dcommit an den Server senden.
Dort kommen die Lognachrichten wieder einzeln an.
Bei Git muss man jede Datei die commitet werden soll mit add hinzufügen. Alternativ kann man den Parameter mit -a setzen und alle versionierten Dateien werden automatisch commitet.
== Nicht-lineare Entwicklung ==
Sowohl das Erstellen neuer Entwicklungszweige (branching) sowie das Verschmelzen (merging) sind einfach und effizient. Git enthält Programme, mit deren Hilfe sich die nicht-lineare Geschichte eines Projektes einfach visualisieren lässt, und mit deren Hilfe man in dieser Geschichte navigieren kann.
Welches Branches existieren?
Erstellen eines neuen lokalen Branch:
Zum anderen Branch wechseln:
Hierbei wird das Dateisystem mit allen Unterschieden zwischen experimente und master umgeschrieben. Änderungen gehen keine verloren - man kann jederzeit wieder zu master wechseln.
== Flexibler Datentransfer ==
Daten können mit einer Reihe verschiedener Protokolle übertragen werden. Git besitzt ein sehr effizientes eigenes Protokoll, das auf TCP-Port 9418 arbeitet. Ebenso kann der Transfer über SSH oder (weniger effizient) über HTTP, HTTPS, FTP oder rsync erfolgen.
== Nützliche Git Tools ==
=== Log ===
=== Diff ===
=== Grep ===
Jeder kennt es bei SVN. Man sucht etwas im Quelltext, muss aber erstens die versteckten SVN Ordner ausblenden und zweitens lange darauf warten bis grep die Binären Dateien durchsucht hat. Mit Git kein Problem, denn es bringt eine eigene grep Implementierung mit.
== Git konfigurieren ==
Einstellungen lassen sich entweder global für ein ein Projekt durchführen.
=== Git in Farbe ===
=== Git mit SVN Befehlen ===
Ich halte nicht viel von Aliasen. Befehle heißen nicht ohne Grund, wie sie eben heißen. Um für die Umsteiger doch ein paar Aliase zu definieren, der legt diese wie folgt an:
== Literatur ==
== Auf bestehendes SVN aufsetzen ==
Beachten wir den ersten Vorteil, dann braucht man sich nicht wundern, dass das erste Klonen des SVN Repositories etwas länger dauert.
Um so mehr freuen wir uns, wenn wir die Dateigrößen betrachten. Vergleichen wir ein Projekt mit 2800 Revision. SVN Checkout meldet 45 MB. Bei Git sind es nur 18 ;)
== Gesamte Versionsgeschichte ==
Jeder Benutzer besitzt eine lokale Kopie der gesamten Projektgeschichte. Es ist kein zentraler Server notwendig. Mit SVN kann man lediglich die letzte Revision einer Datei wiederherstellen. Weil Git außerdem mit Kompression arbeitet macht die Dateigröße einer kompletten Historie oft nur einen Bruchteil der Größe eines SVN Checkouts aus.
== Offline Commits ==
Muss man mehrere abhängige Änderungen gemeinsam übertragen bleibt einem bei SVN nichts anderes übrig als alle Änderungen in einer Commit Nachricht zusammenzufassen. Oft kann man gar nicht mehr alle Änderungen nachvollziehen. Git löst dieses Problems. Mit Git kann man alle Commits sammeln und mit einem finalen dcommit an den Server senden.
Dort kommen die Lognachrichten wieder einzeln an.
Bei Git muss man jede Datei die commitet werden soll mit add hinzufügen. Alternativ kann man den Parameter mit -a setzen und alle versionierten Dateien werden automatisch commitet.
== Nicht-lineare Entwicklung ==
Sowohl das Erstellen neuer Entwicklungszweige (branching) sowie das Verschmelzen (merging) sind einfach und effizient. Git enthält Programme, mit deren Hilfe sich die nicht-lineare Geschichte eines Projektes einfach visualisieren lässt, und mit deren Hilfe man in dieser Geschichte navigieren kann.
Welches Branches existieren?
Erstellen eines neuen lokalen Branch:
Zum anderen Branch wechseln:
Hierbei wird das Dateisystem mit allen Unterschieden zwischen experimente und master umgeschrieben. Änderungen gehen keine verloren - man kann jederzeit wieder zu master wechseln.
== Flexibler Datentransfer ==
Daten können mit einer Reihe verschiedener Protokolle übertragen werden. Git besitzt ein sehr effizientes eigenes Protokoll, das auf TCP-Port 9418 arbeitet. Ebenso kann der Transfer über SSH oder (weniger effizient) über HTTP, HTTPS, FTP oder rsync erfolgen.
== Nützliche Git Tools ==
=== Log ===
=== Diff ===
=== Grep ===
Jeder kennt es bei SVN. Man sucht etwas im Quelltext, muss aber erstens die versteckten SVN Ordner ausblenden und zweitens lange darauf warten bis grep die Binären Dateien durchsucht hat. Mit Git kein Problem, denn es bringt eine eigene grep Implementierung mit.
== Git konfigurieren ==
Einstellungen lassen sich entweder global für ein ein Projekt durchführen.
=== Git in Farbe ===
=== Git mit SVN Befehlen ===
Ich halte nicht viel von Aliasen. Befehle heißen nicht ohne Grund, wie sie eben heißen. Um für die Umsteiger doch ein paar Aliase zu definieren, der legt diese wie folgt an:
== Literatur ==
13.285 mal gelesen