www.wikidata.de-de.nina.az
Dieser Artikel behandelt die Versionsverwaltungssoftware Zu weiteren Bedeutungen siehe GIT Git ɡɪt ist eine freie Software zur verteilten Versionsverwaltung von Dateien die durch Linus Torvalds initiiert wurde GitBasisdatenMaintainer Junio HamanoEntwickler Junio Hamano Shawn Pearce Linus Torvalds u v a Erscheinungsjahr 2005Aktuelle Version 2 42 1 1 2 November 2023 Betriebssystem Linux FreeBSD macOS Solaris u a unixoide Windows Haiku Programmiersprache C 2 Unix Shell Perl Tcl Python C Kategorie VersionsverwaltungLizenz GNU General Public License Version 2 3 deutschsprachig jagit scm com Inhaltsverzeichnis 1 Geschichte 1 1 Name 2 Eigenschaften 2 1 Nicht lineare Entwicklung 2 2 Kein zentraler Server 2 3 Datentransfer zwischen Repositorien 2 4 Kryptographische Sicherheit der Projektgeschichte 2 5 Speichersystem und Dateiversionierung 2 6 Saubern des Repositorys 2 7 Interoperabilitat 2 8 Web Interface 3 Verwendung 3 1 Verwaltung von Inhalt 4 Unterstutzte Betriebssysteme 4 1 Unix Linux 4 2 Windows 5 GUIs 6 Literatur 7 Weblinks 8 EinzelnachweiseGeschichte BearbeitenDurch eine Lizenzanderung des bis dahin genutzten proprietaren BitKeeper Systems konnten die Linux Kernel Entwickler dieses nicht mehr kostenlos verwenden und somit blieb vielen Entwicklern der Zugang verwehrt Daher begann Torvalds im April 2005 mit der Entwicklung einer neuen Quellcode Management Software und prasentierte bereits wenige Tage nach deren Ankundigung eine erste Version nbsp Altes LogoTorvalds wunschte sich ein verteiltes System das wie BitKeeper genutzt werden kann und die folgenden Anforderungen erfullt Unterstutzung verteilter BitKeeper ahnlicher Arbeitsablaufe Sehr hohe Sicherheit gegen sowohl unbeabsichtigte als auch boswillige Verfalschung Hohe EffizienzEin bereits existierendes Projekt namens Monotone entsprach den ersten beiden Anforderungen 4 das dritte Kriterium wurde jedoch von keinem bestehenden System erfullt Torvalds entschied sich dagegen Monotone an seine Anforderungen anzupassen und begann stattdessen ein eigenes System zu entwickeln Einer der Hauptgrunde fur diesen Schritt war die Arbeitsweise fur die Monotone nach Torvalds Ansicht optimiert ist Torvalds argumentierte dass einzelne Revisionen von einem anderen Entwickler in den eigenen Entwicklungszweig zu importieren zu Rosinenpickerei und unordentlichen Repositorien fuhren wurde Wenn hingegen immer ganze Zweige importiert werden waren Entwickler gezwungen diese aufzuraumen Dazu sei es notwendig auch die Moglichkeit von Wegwerf Zweigen anzubieten This is my only real conceptual gripe with monotone I like the model but they make it much harder than it should be to have throw away trees due to the fact that they seem to be working on the assumption of one database per developer rather than one database per tree You don t have to follow that model but it seems to be what the setup is geared for and together with their branches it means that I think a monotone database easily gets very cruddy The other problem with monotone is just performance right now but that s hopefully not too fundamental Ich habe nur ein wirkliches konzeptionelles Problem mit monotone Ich mag die Arbeitsweise aber sie erschwert die Nutzung von Wegwerf Baumen weil das Konzept anscheinend auf der Annahme eine Datenbank je Entwickler statt eine Datenbank je Baum basiert Man braucht zwar nicht diesem Modell zu folgen aber die System Einrichtung scheint darauf ausgerichtet zu sein Zusammen mit ihren Zweigen befurchte ich ein schnelles Verdrecken der monotone Datenbank Ein anderes hoffentlich nicht zu grundlegendes Problem ist die derzeitige Leistungsfahigkeit von monotone Linus Torvalds 4 Gits Gestaltung verwendet einige Ideen aus Monotone sowie BitKeeper aber keinen Quellcode daraus Es sollte ausdrucklich ein eigenstandiges Versionsverwaltungssystem sein Derzeitiger Maintainer von Git ist Junio Hamano 5 Name Bearbeiten Der Name Git bedeutet in der britischen Umgangssprache so viel wie Blodmann Linus Torvalds erklarte seine Wahl des ungewohnlichen Namens mit einem Witz sowie damit dass das Wort praktikabel und in der Softwarewelt noch weitgehend unbenutzt war I m an egotistical bastard and I name all my projects after myself First Linux now Git Ich bin ein egoistischer Mistkerl und ich benenne all meine Projekte nach mir Zuerst Linux jetzt eben Git Linus Torvalds 6 The joke I name all my projects for myself first Linux then git was just too good to pass up But it is also short easy to say and type on a standard keyboard And reasonably unique and not any standard command which is unusual Der Witz Ich benenne alle meine Projekte nach mir zuerst Linux nun eben Git war einfach zu gut um ihn nicht zu machen Aber es der Befehl ist auch kurz einfach auszusprechen und auf einer Standardtastatur zu schreiben dazu einigermassen einzigartig und kein Standardkommando was ungewohnlich ist Linus Torvalds 7 Der Name Linux wurde anfangs nicht von Torvalds selbst propagiert und nur widerwillig akzeptiert 8 Eigenschaften Bearbeiten nbsp DatenflussGit ist ein verteiltes Versionsverwaltungssystem das sich in einigen Eigenschaften von typischen Versionsverwaltungssystemen unterscheidet Nicht lineare Entwicklung Bearbeiten nbsp Entwicklungsgeschichte mit extensiv genutztem Branching und MergingSowohl das Erstellen neuer Entwicklungszweige branching als auch das Verschmelzen zweier oder mehrerer Zweige merging sind integrale Bestandteile der Arbeit mit Git und fest in die Git Werkzeuge eingebaut 9 Git enthalt Programme mit deren Hilfe sich die nicht lineare Geschichte eines Projektes einfach visualisieren lasst und mit deren Hilfe man in dieser Geschichte navigieren kann Verzweigungen branches in Git sind im Gegensatz zu anderen SCMs sehr effektiv implementiert Ein Branch stellt nur eine Reference kurz ref eine Textdatei mit einer Commit ID dar die in einem Repository im Verzeichnis git refs heads z B git refs heads master fur den master Branch liegt und auf einen bestimmten Commit verweist Uber dessen Parental Commits also Eltern Commits lasst sich die Branch Struktur rekonstruieren Durch diese Eigenschaften lassen sich weiterhin sehr grosse und effiziente Entwicklungsstrukturen wie bei Git selbst oder dem Linux Kernel realisieren bei denen jedes Feature und jeder Entwickler einen Branch oder ein eigenes Repository haben aus dem der Projektverantwortliche maintainer dann Commits uber Merge oder Cherry pick Nutzen einzelner Commits in den Hauptzweig des Projekts master ubernehmen kann Kein zentraler Server Bearbeiten nbsp Dezentrale Verwaltung des gesamten Repositories mit Hilfe von GitJeder Benutzer besitzt eine lokale Kopie des gesamten Repositorys inklusive der Versionsgeschichte history So konnen die meisten Aktionen lokal und ohne Netzwerkzugriff ausgefuhrt werden Es wird nicht zwischen lokalen Entwicklungszweigen und Entwicklungszweigen entfernter Repositorien unterschieden Obwohl es keinen technischen Unterschied zwischen verschiedenen Repositorien gibt ausser dem zwischen normalen und bare Repositories auf Servern bei denen kein Working Tree also die echten Dateien existiert gilt die Kopie auf die von einer Projekt Homepage aus verwiesen wird haufig als das offizielle Repositorium in das die Revisionen der Entwickler ubertragen werden Es existieren spezielle Remote tracking branches Das sind Referenzen siehe Nicht lineare Entwicklung die auf den Stand eines anderen Repositoriums zeigen Datentransfer zwischen Repositorien Bearbeiten Daten konnen neben dem Ubertragen auf Dateisystemebene file mit unterschiedlichen Netzwerkprotokollen zwischen Repositories ubertragen werden Git hat ein eigenes sehr effizientes Protokoll das den TCP Port 9418 nutzt git welcher allerdings nur zum Fetchen und Clonen genutzt werden kann also dem Lesen eines Repositorys Ebenso kann der Transfer uber SSH ssh das gangigste Protokoll fur Schreiboperationen HTTP http HTTPS https oder uber weniger effizient FTP ftp oder rsync rsync erfolgen 10 Die Ubertragung in das offizielle Repository eines Projekts erfolgt haufig in Form von Patches die via E Mail an den Entwickler oder eine Entwicklungs Mailing Liste geschickt werden Alternativ kann auch ein Review System wie Gerrit verwendet werden 11 Fur Projekte die auf Websites wie GitHub oder Bitbucket gespeichert hosting werden kann eine Anderung einfach durch das Pushen eines Branches vorgeschlagen werden der dann bei Bedarf durch ein Merge in das Projekt integriert wird Kryptographische Sicherheit der Projektgeschichte Bearbeiten nbsp Beschadigtes ObjektDie Geschichte eines Projektes wird so gespeichert dass der Hash Wert einer beliebigen Revision commit auf der vollstandigen Geschichte basiert die zu dieser Revision gefuhrt hat Dadurch ist es nicht moglich die Versionsgeschichte nachtraglich zu manipulieren ohne dass sich der Hash Wert der Revision andert In der Kryptographie nennt man dies einen Hash Baum Einzelne Revisionen konnen zusatzlich markiert tagging und optional mit GPG digital signiert werden signed tag beispielsweise um den Zustand zum Zeitpunkt der Veroffentlichung einer neuen Version der Software zu kennzeichnen Speichersystem und Dateiversionierung Bearbeiten Es gibt Versionsverwaltungssysteme beispielsweise CVS die fur jede Datei und jedes Verzeichnis eigene von allen anderen Dateien unabhangige Revisionsnummern verwalten Fur eine Datei wird nur dann eine neue Nummer erzeugt wenn die jeweilige Datei Teil einer Commit Operation ist Im Gegensatz dazu weist Git bei jedem Commit allen im Repository verwalteten Dateien und Verzeichnissen eine neue fur alle Dateien gleiche Revisionsnummer zu Das Abspeichern selbst erfolgt indem im Commit Objekt ein Verweis auf die Projektwurzel als tree Objekt gespeichert wird das wiederum Verweise auf blobs binary large objects die reinen Inhalte der Dateien ohne Identifizierung und weitere trees Verzeichnisse enthalt Ein tree Objekt verweist wie ein Verzeichnis Inode mit seinen Eintragen auf SHA1 Prufsummen die weitere trees und blobs identifizieren ahnlich Inode Nummern in Dateisystemen Wenn eine Datei in einem Commit nicht geandert wird andert sich auch die Checksumme nicht und sie braucht nicht nochmals gespeichert zu werden Die Objekte liegen im Projekt unter git objects Uber Git Bordmittel lasst sich jeder beliebige Commit uber den zugeordneten Hash Wert die Prufsumme eindeutig identifizieren separat auslesen verschmelzen oder gar als Abzweigungspunkt nutzen vergleichbar mit den Revisionsnummern in anderen Systemen Saubern des Repositorys Bearbeiten Die Daten geloschter und zuruckgenommener Aktionen und Entwicklungszweige bleiben vorhanden und konnen wiederhergestellt werden bis sie explizit geloscht werden Interoperabilitat Bearbeiten Es gibt Hilfsprogramme die Interoperabilitat zwischen Git und anderen Versionskontrollsystemen herstellen Solche Hilfsprogramme existieren unter anderem fur GNU arch git archimport CVS git cvsexportcommit git cvsimport und git cvsserver Darcs darcs fastconvert darcs2git und andere Quilt git quiltimport und Subversion git svn Web Interface Bearbeiten nbsp Gitweb mit den Unterschieden zwischen zwei CommitsMit Gitweb gibt es eine in Perl geschriebene Weboberflache Der Team Foundation Server von Microsoft hat eine Git Anbindung Git tf Verwendung BearbeitenGit wird fur die Entwicklung vieler Projekte sowohl kommerziell als auch im Open Source Bereich oft auf Plattformen wie GitHub GitLab 12 oder BitBucket eingesetzt So wird Git zur Versionsverwaltung des Linux Kernels oder nach der Umstellung Microsofts auf Git 2017 von Microsoft Windows verwendet 13 Laut Open Hub verwendeten im April 2019 rund 69 aller dort registrierten Softwareprojekte Git 14 Damit dominiert Git mit grossem Abstand zu dem nachstplatzierten Subversion das 25 erreicht Verwaltung von Inhalt Bearbeiten Obwohl Git primar zur Versionsverwaltung von Quellcode entwickelt wurde wird es auch zum Speichern von flach strukturierten im Gegensatz zu relationalen Strukturen Datensatzen direkt als Datei genutzt So konnen Funktionen wie Versionsverwaltung Hook diff Replikation und Offline Nutzung auch fur Inhalte ohne Datenbank genutzt werden 15 Die Nutzung ist ahnlich zu NoSQL auch wenn Git keine Indexstruktur Abfrage oder Gleichzeitigkeit erlaubt Der Einsatz erstreckt sich auch auf inhaltlich einfach strukturierte Systeme wie CMS 15 oder Wikis 16 17 Unterstutzte Betriebssysteme BearbeitenUnix Linux Bearbeiten Git lauft auf fast allen modernen unixartigen Systemen wie Linux Solaris macOS FreeBSD DragonFly BSD NetBSD OpenBSD AIX IRIX Apple liefert macOS mit einer leicht abgewandelten Git Version aus Hauptsachlich wird diese verwendet um die Kompatibilitat mit Apples Entwicklungsumgebung Xcode zu erhohen 18 Windows Bearbeiten Es gibt mehrere Portierungen von Git fur Microsoft Windows Git for Windows 19 die Portierung des Git Projektes fruher entwickelt unter dem Namen msysGit 20 Kann durch das Modul posh git auch via PowerShell genutzt werden 21 Die Cygwin Umgebung enthalt Git TortoiseGit ist eine Erweiterung fur den Windows Explorer Windows Shell Extension so dass man Git unter Windows auch ohne Kommandozeile verwenden kann TortoiseGit benotigt zusatzlich eine Git Installation normalerweise Git for Windows 22 GUIs Bearbeiten Hauptartikel Liste von Git GUIsLiteratur BearbeitenValentin Haenel Julius Plenz Git Verteilte Versionsverwaltung fur Code und Dokumente Open Source Press Munchen 2011 ISBN 978 3 941841 42 0 Online Version Nina Siessegger Git kurz amp gut O Reilly Verlag Koln 2022 ISBN 978 3 96009 187 5 Jon Loeliger Matthew McCullough Version Control with Git 2 Auflage O Reilly Media Sebastopol 2012 ISBN 978 1 4493 1638 9 Scott Chacon Pro Git APress New York 2014 ISBN 978 1 4842 0077 3 E Book Sujeevan Vijayakumaran Git Schnelleinstieg mitp Frechen 2022 ISBN 978 3 7475 0526 7 Weblinks Bearbeiten nbsp Commons Git Sammlung von Bildern Videos und Audiodateien Git Homepage offizielle Webprasenz von Git Git documentation Git Dokumentation auf der Git Website englisch Pro Git deutsche Ubersetzung des Buches Pro Git auf der Git Website Mark Lodato A Visual Git Reference Git a brief introduction auf YouTube mit Randal L Schwartz seit 2005 ein Wegbereiter von Git am 12 Oktober 2007 englisch Linus Torvalds on Git Linus Torvalds uber Git bei einem Google Tech Talk 3 Mai 2007 auf YouTube englisch Einzelnachweise Bearbeiten Junio Hamano ANNOUNCE Git v2 42 1 2 November 2023 The git Open Source Project on Open Hub Languages Page In Open Hub abgerufen am 14 Juli 2018 Copying englisch abgerufen am 5 August 2018 a b Linus Torvalds Kernel SCM saga In Linux Kernel Archive 6 April 2005 abgerufen am 5 August 2018 englisch Alexander Neumann Vor 10 Jahren Linus Torvalds baut Git In Heise online 8 April 2015 abgerufen am 5 August 2018 Git FAQ Why the Git name 9 Marz 2013 abgerufen am 5 August 2018 englisch Robert McMillan Lord of the Files How GitHub Tamed Free Software And More In Wired 21 Februar 2012 abgerufen am 6 August 2018 englisch Siehe dazu Geschichte von Linux Der Name Linux Chapter 1 Repositories and Branches In Git User s Manual Abgerufen am 5 August 2018 englisch Exporting a git repository via http In Git User s Manual Abgerufen am 5 August 2018 englisch Submitting patches to a project In Git User s Manual Abgerufen am 5 August 2018 englisch GitLab Documentation Abgerufen am 5 August 2018 englisch Rainald Menge Sonnentag Microsoft nutzt ab sofort Git zur Windows Entwicklung Heise online 23 August 2017 abgerufen am 5 August 2018 Compare Repositories Open Hub Open Hub abgerufen am 26 April 2019 englisch a b Brandon Keepers Git the NoSQL Database 21 April 2012 abgerufen am 5 August 2018 englisch Adam Feber How we Moved 2 3 Million Wiki Pages to Git Nicht mehr online verfugbar 4 Februar 2014 archiviert vom Original am 10 August 2016 abgerufen am 3 Februar 2019 englisch gollum A git based Wiki Abgerufen am 5 August 2018 englisch Are there any differences with the git provided by Apple and the official git Abgerufen am 18 April 2019 englisch Alexander Neumann Git for Windows verlasst Preview Status Heise online 19 August 2015 abgerufen am 5 August 2018 Relationship to Git for Windows Abgerufen am 5 August 2018 englisch Git Git in PowerShell Abgerufen am 18 Juli 2020 Frequently asked questions FAQ What are the system prerequisites of TortoiseGit In tortoisegit org Abgerufen am 26 April 2019 englisch Normdaten Sachbegriff GND 7687494 1 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Git amp oldid 237497185