Verteilte Versionskontrolle mit GIT - JUG Dortmund

17.04.2012 - GreenPocket bietet Energieversorgern innovative Software-Lösungen für. Smart Metering und Smart Home an, mit denen Haushalts- und.
104KB Größe 8 Downloads 205 Ansichten
Verteilte Versionskontrolle mit GIT

17.04.2012 - Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

1

über mich • 32 Jahre alt • Softwareentwickler bei der Firma GreenPocket in Köln • Java EE Entwickler und Rails Begeisterter. Linux und Mac OS auf Server und Laptop. • Twitter: @a_brauner EMail: [email protected]

2

greenpocket • GreenPocket bietet Energieversorgern innovative Software-Lösungen für Smart Metering und Smart Home an, mit denen Haushalts- und Gewerbekunden ihre Energieeffizienz nachhaltig verbessern können. • Unsere Kunden sind Energieversorger jeglicher Größenordnung – vom kleinen und mittleren Stadtwerk bis zum großen Energiekonzern. • Ziel ist es, die Energieeffizienz zu fördern und den CO2-Ausstoß der Haushalte und Gewerbe in Deutschland langfristig zu reduzieren. • GreenPocket hat sich deshalb zum Ziel gesetzt, die Vorteile von Smart Metering für den Verbraucher sichtbar zu machen. • Dazu setzen wir auf innovative Software-Lösungen, die es Energieversorgern ermöglichen, Intelligenz in die digitale Datenmenge zu bringen und die entstehenden Mehrwerte verbraucherorientiert zu visualisieren.

3

GIT - Eine kleine Einführung •

Verteiltes Versionskontrollsystem



Aktionen mit dem Repository finden in der Regel lokal statt



Abgleich mit verschiedenen Remote Repositories kann auf verschiedenen Wegen stattfinden.



Jede Kopie ist ein vollständiges Repository



Backups durch kopieren der Dateien im .git Verzeichnis



Lokale Aktionen sind schnell



Branchen und Mergen ist günstig, einfach und schnell



Nahezu jeder beliebige Workflow ist abbildbar

4

Die wichtigsten Befehle • clone

• merge

• init

• grep

• pull

• log

• push

• rm

• status

• show

• add

• stash

• commit

• remote

• diff

• rebase

• fetch

• reset

• branch

• tag

5

Hilfe • Sehr gute und ausführliche Manpages • git help liefert einer Übersicht der wichtigsten Befehle • git -h liefert eine kurze Hilfe • git help || git help Öffnet die jeweilige Manpage

6

Initialisieren eines Repositories • Neues Repository git init • Bestehendes Repository git clone • Mögliche URLs Lokales Verzeichnis file://, ssh://, git://, ftp://

7

Der Index • GIT führt etwas ein was wahlweise „Index“ oder „Stage“ genannt wird • Der Index dient dazu den nächsten Commit vorzubereiten • Es können Teile von Dateien auf den Index gelegt werden falls nur Teile im nächsten Commit berücksichtigt werden sollen • Elemente können auch wieder vom Index entfernt werden Die Änderung bleibt bestehen ist dann aber nicht Teil des nächsten Commits • git commit -a fügt automatisch alle Änderungen zum Index hinzu bevor der Commit ausgeführt wird.

8

Arbeiten mit dem Index • Dateien werden mit „git add ...“ zum Index hinzugefügt • „git reset“ dient dazu Elemente vom Index zu entfernen

9

git commit • Elemente vom Index werden in dem lokalen Repository festgeschrieben • Die HEAD-Referenz wird auf diesen aktuellsten Commit verlinkt • „git commit --amend“ ändert den letzten Commit Nützlich bei vergessenen Dateien, unzureichenden Commit-Nachrichten !!! Nur bei nicht veröffentlichten Commits !!!

10

git status • Zeigt Informationen zu den Dateien im aktuellen Verzeichnis an • Datei neu (nicht versioniert), • Datei verändert, • Datei auf dem Index • Eine Datei die sich bereits auf dem Index befand und erneut verändert wurde, muss dem Index erneut hinzugefügt werden.

11

git diff • Zeigt Änderungen zwischen angegebene Versionen an • „git diff“ zwischen Arbeitskopie und Index • „git diff --cached“ zwischen Index und dem letzten Commit • „git diff HEAD“ zwischen Arbeitskopie und dem letzten Commit • „git diff ..“ zwischen zwei spezifischen Commits • „git diff zwischen dem aktuellen und angegebene Branch

12

git log • „git log“ zeigt das vollständige Commit-Log. • „git log -10“ die letzten 10 Commit-Messages • „git log --author=‘john doe‘“ alle Commit-Messages von john doe

13

git remote • Stellt Verbindung zu einem Remote Repository her • Es kann beliebig viele „Remotes“ geben • Jedes Remote stellt ein eigenes vollständiges Repository dar • Es könne Branches eines Remotes ausgecheckt werden • Informationen über Änderungen können aus verschiedenen Remotes bezogen werden • Es kann in der Regel nicht in Remotes gepushed werden da die dortigen, lokalen Änderungen nicht bekannt sind • Lösung: Den Remote-Eigentümer bitten zu pullen • So genannte „bare“ Repositories können als zentrales Repository dienen in die dann auch gepushed werden darf.

14

Arbeiten mit Remotes • „git remote add “ fügt ein neues Remote Repository hinzu • „git remote show“ zeigt alle Remote-Namen • „git remote show “ zeigt Informationen zu dem jeweiligen Remote

15

git branch • Der default Branch heißt master • „git branch “ erzeugt einen neuen lokalen Branch • „git checkout “ wechselt in den lokalen Branch • „git checkout -b “ erzeugt den lokalen Branch und wechselt direkt dorthin • Die HEAD Referenz wird entsprechend angepasst • Branches können gelöscht werden, Vorsicht bei veröffentlichten Branches • Es wird zwischen bereits gemergten und nicht gemergten Branches unterschieden

16

git branch • „git branch“ zeigt die lokal vorhandenen Branches • „git branch -r“ zeigt die Branches in allen Remote Repositories • „git branch -a“ zeigt alle Branches an • „git branch --no-merged“ zeigt noch nicht zurückgeführte Branches an

17

URLs • Git Documentation http://git-scm.com/documentation • Git from bottom up http://ftp.newartisans.com/pub/git.from.bottom.up.pdf • Pro Git http://progit.org • Git Ready http://www.gitready.com • Verteilte Versionskontrolle mit Git http://bit.ly/bt1yEN • Git for Computer Scientists http://eagain.net/articles/git-for-computer-scientists/

18

Fragen?

19