= Git für Philosophen == Kurzer geschichtlicher Abriß über [[http://de.wikipedia.org/wiki/Versionsverwaltung|Versionsverwaltung]] allgemein. Die (unvollständige) Entwicklung ohne kommerzielle Lösungen: * [[http://de.wikipedia.org/wiki/Source_Code_Control_System|SCCS]] (Source Code Control System, 1972) im Unix Umfeld (Bell Labs) * [[http://de.wikipedia.org/wiki/Revision_Control_System|RCS]] (Revision Control System, 1982), [[http://de.wikipedia.org/wiki/Diff|diff]]-Sammlung parallel zu jeder Datei, * [[http://de.wikipedia.org/wiki/Concurrent_Versions_System|CVS]] (Concurrent Versions System, 1989), Netzwerk-Erweiterung von RCS (diff Sammlungen auf einem zentralen Server), * [[http://de.wikipedia.org/wiki/Apache_Subversion|SVN]] (Subversion, 2000) - "CVS ohne dessen Fehler", * [[http://de.wikipedia.org/wiki/Git|Git]] 2005 - Neuentwicklung zur Verwaltung der Linux-Kernel Quellen, kein zentraler Server nötig * [[http://de.wikipedia.org/wiki/Mercurial|Mercurial]] 2005 - "git" für CVS/SVN Umsteiger, auch kein zentraler Server nötig == Konzepte * [[http://de.wikipedia.org/wiki/Verteiltes_Versionskontrollsystem#Lock_Modify_Write|Lock-Modify-Write]] pfui, * [[http://de.wikipedia.org/wiki/Verteiltes_Versionskontrollsystem#Copy_Modify_Merge|Copy-Modify-Merge]] == Topologien * lokal, im Dateisystem eingestreut (SCCS, RCS), * zentrales Repository (CVS, SVN), * verteilte, gleichberechtigte Repositories (git, mercurial) == Terminologie http://de.wikipedia.org/wiki/Verteiltes_Versionskontrollsystem * Repository (Repo): Archiv mit kompletter Änderungsgeschichte (was, wann, wer, wieso) * checkout: erstmalig Dateien aus dem Repository holen bzw. wiederholt auffrischen, * update: Dateien mit aktuellen Stand aus dem Repository auffrischen, * commit: Änderung(en) in's Repository schreiben, * changeset: Zusammengehörige Änderungen an mehreren Dateien in einem Commit * branch: "Zweig" - von der Hauptentwicklung abzweigende aufeinanderfolgende Änderungen * trunk: Hauptzweig (git nennt das: 'master') == Git Benutzung * [[http://code.google.com/p/git-osx-installer/|Installation]] * [[http://gitx.frim.nl/|commit GUI]] * [[http://repo.or.cz/w/git.git/blob/HEAD:/contrib/completion/git-completion.bash|Bash Completion]] git... * ...[[http://gitref.org/creating/#init|init]] - lokal neues Repo anlegen * ...[[http://gitref.org/basic/|add status diff commit reset]] (dafür ist GitX sehr gut) * ...[[http://gitref.org/branching/|checkout branch merge]] (Branch anlegen, wechseln, löschen) * ...[[http://gitref.org/creating/#clone|clone]] - Repo kopieren, * ...[[http://gitref.org/remotes/|fetch pull push]] - Sync mit anderen Repos == Hosting * [[http://www.kernel.org/pub/software/scm/git/docs/git-clone.html#_git_urls_a_id_urls_a|extrem flexibel]] * Open Source gerne bei http://github.com - ich auch: http://github.com/mro == Links * http://git-scm.com/ - Homepage * http://gitref.org/ - sehr gute Doku * http://www.kernel.org/pub/software/scm/git/docs/ - Manpages * http://www.kernel.org/pub/software/scm/git/docs/user-manual.html - Original Manual * [[http://basepath.com/aup/talks/SCCS-Slideshow.pdf|SCCS Paper im IEEE 1975]] * [[http://portal.acm.org/citation.cfm?id=807748|RCS Paper im IEEE 1982]] {{tag> Versionsverwaltung git github mercurial svn subversion cvs rcs sccs}}