Transcript
Page 1: Verteilte Versionskontrolle mit Git

GoBack

Page 2: Verteilte Versionskontrolle mit Git

Seite 1

Page 3: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Seite 2

Verteilte Versionsverwaltungmit git

als Ergänzung oder Ersatz für klassische Systeme wie Subver sion

Jan Dittberner <[email protected]>

29.09.2009

Page 4: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Verteilte Versionsverwaltung

VerteilteVersionsverwaltung

Historie

Vorteile

Nachteile

Git

Git praktisch

Diskussion/Fragen

Seite 3

Page 5: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Historie - lokale Versionkontrolle

VerteilteVersionsverwaltung

Historie

Vorteile

Nachteile

Git

Git praktisch

Diskussion/Fragen

Seite 4

■ Verzeichniskopien

■ RCS, SCCS

■ Microsoft VSS (über Fileshares netzfähig)

Page 6: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Historie - zentrale Systeme

VerteilteVersionsverwaltung

Historie

Vorteile

Nachteile

Git

Git praktisch

Diskussion/Fragen

Seite 5

■ CVS (basiert auf RCS)

■ Subversion (SVN)

■ diverse andere (Perforce, CM-Synergy)

Page 7: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Historie - dezentrale Systeme

VerteilteVersionsverwaltung

Historie

Vorteile

Nachteile

Git

Git praktisch

Diskussion/Fragen

Seite 6

■ BitKeeper

■ Mercurial (hg)

■ Bazaar (bzr)

■ Git

■ Darcs

Page 8: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Vorteile dezentraler SCM-Systeme

VerteilteVersionsverwaltung

Historie

Vorteile

Nachteile

Git

Git praktisch

Diskussion/Fragen

Seite 7

■ komplette lokale Historie

■ Möglichkeit zur Offline-Arbeit

■ sehr schnell (Diff, Log, etc.)

■ verschiedene Workflows möglich

■ lokale Tests (z.B. für Featurebranches) beeinflussenandere Entwickler nicht

■ durch hohe Geschwindigkeit häufig kleinere Commits(bessere Nachvollziehbarkeit von Änderungen)

■ robustere Merging-Mechanismen

Page 9: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Nachteile dezentraler SCM-Systeme

VerteilteVersionsverwaltung

Historie

Vorteile

Nachteile

Git

Git praktisch

Diskussion/Fragen

Seite 8

■ keine zentrale Kontrolle

■ Umgang muss erlernt werden (Nachteil?)

Page 10: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Git

VerteilteVersionsverwaltung

GitHerkunft undVerbreitung

Warum Git?

Verfügbarkeit

Toolunterstützung

Git praktisch

Diskussion/Fragen

Seite 9

Page 11: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Herkunft und Verbreitung

VerteilteVersionsverwaltung

GitHerkunft undVerbreitung

Warum Git?

Verfügbarkeit

Toolunterstützung

Git praktisch

Diskussion/Fragen

Seite 10

■ Ursprünglich von Linus Torvalds für die Entwicklung desLinux-Kernels als Ersatz für das kommerzielle Bitkeeperentwickelt.

■ Einsatz inzwischen in vielen kleineren und auch extremgroßen Projekten: Linux Kernel, Wine, Perl, GNOME,Qt, Ruby on Rails, Android, Fedora, Debian, X.org, VLC

■ wird inzwischen von einigen OpenSource-Hosternangeboten. SourceForge [3] und Github [4] sind diebekanntesten.

Page 12: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Warum Git?

VerteilteVersionsverwaltung

GitHerkunft undVerbreitung

Warum Git?

Verfügbarkeit

Toolunterstützung

Git praktisch

Diskussion/Fragen

Seite 11

■ Umfangreiche Projektseite [1] und Dokumentation [2].

■ vollständige Dokumentation aller Unterbefehlegit help <subcommand >■ leichtgewichtige lokale Branches

■ sehr schnell

■ sehr kompakte lokale Repositories (teilweise kleiner alsSVN-Checkout einer einzelnen Version)

■ erlaubt lokales Staging von Änderungen

■ unterstützt praktisch beliebige Workflows

■ siehe auch http://de.whygitisbetterthanx.com/

Page 13: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Verfügbarkeit

VerteilteVersionsverwaltung

GitHerkunft undVerbreitung

Warum Git?

Verfügbarkeit

Toolunterstützung

Git praktisch

Diskussion/Fragen

Seite 12

Verfügbarkeit:

■ Download von der Git Projektseite [1]

■ Debianaptitude install git -core■ Windows

◆ Cygwin http://www.cygwin.com/

◆ msysGit http://code.google.com/p/msysgit/

Page 14: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Toolunterstützung

VerteilteVersionsverwaltung

GitHerkunft undVerbreitung

Warum Git?

Verfügbarkeit

Toolunterstützung

Git praktisch

Diskussion/Fragen

Seite 13

■ TortoiseGit – Explorer-Erweiterung ähnlich TortoiseSVNhttp://code.google.com/p/tortoisegit/■ eGit – Eclipse Git Team Providerhttp://git.or.cz/gitwiki/EclipsePlugin■ ggit (Gnome), gitk (Tcl/Tk), gitx (MacOS X) als

Repository-Browser

■ viele weitere:http://git.or.cz/gitwiki/InterfacesFrontendsAndTools

Page 15: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Git praktisch

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 14

Page 16: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Einrichtung, Erzeugen eines Repositories

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 15

Git für lokale Entwicklung einrichten:git config --global user.name "Jan Dittberner "git config --global user.email \"jan.dittberner@communardo .de"git config --global user.signingkey "0 x4f5ba649 "

Repository anlegen in einem beliebigen Verzeichnis:git init

Dateien hinzufügen und eincheckengit add .git commit -m "mein erster Commit "

Page 17: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Repositories klonen

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 16

Repository über SSH klonen, damit wird die Verbindung zumRemote-Repository als Quelle vermerkt.git clone ssh :// user@host :/ repodir/project.gitZum Klonen erlaubt git verschiedene Mechanismen: ssh,git-eigenes Protokoll, rsync, http, https, Dateipfade. Bei httpund https ist nur ein lesender Zugriff möglichFolgendes Kommando holt neue Änderungen vomRemote-Repository in ein lokales Repository:git pull

Page 18: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Arbeiten mit Branches

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 17

Branches und Tags sind bei git anders als z.B. bei Subversionnicht einfach Kopien eines Arbeitsstandes.Branch erstellen:git branch <branchname >Branch erstellen und auschecken:git checkout -b <branchname >Branches auflisten:git branch

Page 19: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Mergen von Änderungen, Aktualisierungen vonBranches

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 18

Änderungen aus einem Branch in den Hauptzweig master(entspricht trunk bei SVN) übernehmen:git checkout mastergit merge <branch >

Um einen Branch, der z.B. für ein Feature angelegt wurde aufden aktuellen Stand des master-Branches zu bringen:git checkout <branch >git rebase masterBei vielen lokalen Commits kann es sinnvoll sein, diesezusammenzuführen. Die letzten 3 Commits können z.B. sozusammengeführt werden:git rebase -i HEAD ~3

Page 20: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Tags

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 19

Ein Tag ist ein symbolischer Name für einen bestimmtenZustand eines Branches, also einen Commit. Tags könnenmit einer PGP-Signatur versehen werden.Tag erstellen mit Signatur:git tag -s release_1 .1

Page 21: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Umgang mit History

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 20

Letzte Versionen anzeigen lassen:git log

Unterschiede zum letzten commiteten Stand anzeigenlassen:git diff

Besonders gut lässt sich die Versionshistorie z.B. mitgitk/gitg/gitx visualisieren.

Page 22: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Patches

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 21

■ bei vielen OpenSource-Projekten werden Bugfixes inForm von Patches weitergegeben und ggf. in dasHauptrepository übernommen

■ Git unterstützt dies mit den format-patch und amUnterkommandos

Patches für die letzten 3 Änderungen erzeugen:git format -patch HEAD ~3.. HEAD

Page 23: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

SVN-Integration

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 22

■ SVN-Repositories lassen sich über das Subkommandosvn von Git nutzen1

■ Vorteile: lokale Version der kompletten Historie, offlinearbeiten möglich, schnelle Diffs

SVN-Repository klonen:git svn clone -s <repourl > <pfad >Updates von SVN-Repository holen:git svn fetchÄnderungen ins SVN übertragen:git svn dcommit

1funktioniert unter Windows noch eher schlecht

Page 24: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Trac-Integration

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 23

■ das GitPlugin [5] für Trac erlaubt Git- stattSVN-Repositories

■ über pre-receive und post-receive-Hooks [6] kann einGit-Repository mit einer Trac-Installation interagierenund z.B. Tickets schließen oder Kommentare zu diesenhinzufügen

Page 25: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

weitere Integrationen

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 24

■ Maven http://maven.apache.org/scm/git.html■ JIRAhttp://confluence.atlassian.com/display/JIRAEXT/Jira+Git+Plugin

■ Hudsonhttp://wiki.hudson-ci.org/display/HUDSON/Git+Plugin

Page 26: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Referenzen

VerteilteVersionsverwaltung

Git

Git praktisch

Start mit Git

Repositories klonen

Branches

Merge

Tags

Umgang mit History

Patches

SVN-Integration

Trac-IntegrationweitereIntegrationen

Referenzen

Diskussion/Fragen

Seite 25

[1] http://www.git-scm.com/

[2] http://www.git-scm.com/documentation[3] SourceForge Git Hosting

[4] http://github.com/[5] http://trac-hacks.org/wiki/GitPlugin

[6] Commithooks von John Goerzen

Page 27: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

VerteilteVersionsverwaltung

Git

Git praktisch

Diskussion/Fragen

Seite 26

Vielen Dank für Eure Aufmerksamkeit.Gibt es Fragen?

Page 28: Verteilte Versionskontrolle mit Git

c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de

Kontakt

VerteilteVersionsverwaltung

Git

Git praktisch

Diskussion/Fragen

Seite 27

Jan DittbernerSoftware Architekt und Debian Developer

Communardo Software GmbHKleistraße 10aD-01129 [email protected]


Recommended