Repository Besonderheiten Vorgucker 3 Weiterf¨ uhrende Informationen Im Web Randnotiz Rest ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 2 / 23
Revisionen sichern und wieder herstellen Unterschiede zwischen Versionen anzeigen Zentralisiertes Versionskontrollsystem (VCS) CVS oder Subversion (SVN) Daten und Historie liegen auf einem zentralen Server Mitarbeiter checkt eine lokale Arbeitskopie aus ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 3 / 23
VCS) Mercurial (HG), Bazaar (BZR) oder Git Alle Ver¨ anderungen liegen lokal und nicht nur auf dem Server Jede Kopie (Klon) ist somit ein vollumf¨ angliches Backup Verschiedene lokale Kopien k¨ onnen synchronisiert werden ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 4 / 23
Hauptentwickler von Git Ist stolz auf Git, mehr als auf Linux Zitat Linus Torvalds Linux ist etwas nachgemachtes, Git ist etwas v¨ ollig Neues. Zitat Anwender Git ist cool :-) ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 5 / 23
vier. Und mehr Theorie gibt es auch nicht, daf¨ ur gibt es wirklich gute B¨ ucher. Blobs – ” Binary Large Objects“ In Blobs liegen alle Dateien, die Dateien werden durch ihre Pr¨ ufsumme (SHA1 Hash) referenziert. In Blobs ist nicht der Name enthalten. So stellt Git sicher, dass mehrere Dateien mit gleichem Inhalt nur ein Mal gespeichert werden. Trees Ein Baumobjekt steht f¨ ur einen Verzeichniszweig, darin enthalten sind ” Blob identifier“ (Referenzen auf Dateien), Pfadnamen und ein paar Metadaten. Baumobjekte k¨ onnen sich gegenseitig referenzieren. Damit kann man einen kompletten Verzeichnisbaum darstellen. ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 6 / 23
Daten f¨ ur jede Ver¨ anderung eines Repositories. Enthalten sind Autor, Committer, Commit Datum und die Lognachricht. Jeder Commit zeigt auf ein einzelnes Verzeichnisobjekt, das den Stand des Repositories zu einem bestimmten Zeitpunkt repr¨ asentiert. Bis auf den allerersten Commit (Init), hat jeder Commit einen Eltern (Parent) Commit. Tags Tags sind einfach lesbare Namen f¨ ur Objekte (meistens f¨ ur Commits), die durch ihre SHA1-Pr¨ ufsumme identifiziert werden. 1e9036eb5764aea857bbd5f0522efbfec3ff4a36 ist zwar eindeutig, aber ” Version-1.1“ ist deutlich lesbarer. ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 7 / 23
n f i g −−g l o b a l user . name ” Dirk Deimeke” g i t c o n f i g −−g l o b a l user . email ” dirk@deimeke . net ” g i t c o n f i g −−g l o b a l c o l o r . ui always ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 9 / 23
p o s i t o r y cd r e p o s i t o r y g i t i n i t g i t add −A . g i t commit −m ” I n i t ” l s −l a . g i t cat . g i t / c o n f i g ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 10 / 23
t s t a t u s vim Erste −Datei . t x t g i t s t a t u s g i t add Erste −Datei . t x t g i t s t a t u s g i t commit −m ” Erste Datei , j e t z t f r i s c h ” g i t s t a t u s ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 11 / 23
x t g i t s t a t u s g i t d i f f Erste −Datei . t x t vim Zweite−Datei . t x t g i t s t a t u s g i t d i f f HEAD g i t commit −am ”Aenderungen an der e r s t e n Datei ” g i t add Zweite−Datei . t x t g i t commit −m ” Zweite Datei ” ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 12 / 23
g i t log # L i e s t d i e H i s t o r i e und z e i g t a l l e # Changes g i t log −p # z e i g t ausserdem D i f f e r e n z e n # zwischen Changes g i t log −−s t a t # Summiert Changes auf g i t mv # Datei oder V e r z e i c h n i s umbenennen g i t rm # Datei oder V e r z e i c h n i s loeschen g i t grep # Durchsucht das Repository nach # einem Muster ( n i c h t b i n a e r ) ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 14 / 23
i t a r c h i v e # Archiv e i n e s Teilbaums e r s t e l l e n g i t r e v e r t # Nimmt den l e t z t e n Commit mit einem # neuen Commit zurueck g i t blame # Wer t r a e g t Schuld ? ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 15 / 23
gibt Hilfe f¨ ur jedes Kommando, die Manpage f¨ ur git add findet sich unter git-add. Es gibt viele, wirklich viele Manpages. ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 16 / 23
user@host:/some/path/to/repo.git xxx Macht einen lokalen Klon ins Verzeichnis xxx. Checkt den Zweig ” HEAD“ als master aus Setzt das entfernte Repository als Origin ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 18 / 23
commit -a Eventuell pr¨ ufen, was sich ver¨ andert hat git fetch origin ; git diff master origin/master Aktualisieren vom Upstream Mit merge: git pull origin master Mit rebase: git pull --rebase origin master Und Hochladen zum Upstream git push origin master ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 19 / 23
(Gratis!) Pro Git auf GitHub git clone https://github.com/progit/progit.git progit.git O’Reilly zu Git Open Source Press Git GitHub GitHub Pages ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 21 / 23
git svn auch auf Subversion-Repositories zugreifen, eventuell muss das svn-Feature nachinstalliert werden. Vorteil ist, dass man dabei die Vorteile von Git (alles ist lokal) hat. Der folgende Link enth¨ alt einen Git Crash Course, f¨ ur die die Subversion bereits kennen: Git - SVN Crash Course Ich habe einmal aufgeschrieben, wie man seine Subversion-Repositories nach Git migrieren kann: Migration von Subversion zu Git ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 22 / 23
n¨ achsten Folge geht es um die Arbeit mit Remote Repositories am Beispiel von GitHub. Lizenz Lizenz dieses Talks ist CC-BY. ddeimeke (My own IT) Einf¨ uhrung in Git 19. August 2013 23 / 23