Having fun with GIT. Chris Wewerka. Software Development Specialist



Ähnliche Dokumente
Praktikum Ingenieurinformatik (PI)

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Versionskontrollsysteme

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Von SVN zu Git. Daniel Willmann cbna

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Die Projek*ools. Files, Git, Tickets & Time

Apache Subversion (SVN)

Software Engineering in der Praxis

Git in großen Projekten

Programmieren 2 06 Git-Teamwork und Egit

Versionsverwaltung mit SVN

Git-Workflows im Alltag

Moodle aktuell halten mit Git

Einführung in Subversion

git Änderungen verwalten mit git

Konfigurationsdateien mit Git verwalten

Linux Cafe Referent: Bernd Strößenreuther

Git II. Dezentrale Versionsverwaltung im Team

Einführung in Git. Dirk Deimeke. 19. August My own IT. ddeimeke (My own IT) Einführung in Git 19. August / 23

Sourcecodeverwaltung

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Git. Dezentrale Versionsverwaltung im Team Grundlagen und Workflows. Rene Preißel Björn Stachmann. 2., aktualisierte und erweiterte Auflage

Versionierung und Bugtracking mit Git(Hub)

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Deployment Deployment Seite 1 / 25

Erfolgreicher Ums9eg auf Git

Versionsverwaltung mit git. Christoph Knabe FB VI

Git - Fast Version Control System

1 Zugang zum GIT Repository

Migration von Subversion nach Mercurial und Einsatz dezentraler Versionskontrolle in Unternehmen

Lizenzen auschecken. Was ist zu tun?

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wie benutzt man TortoiseSVN

Revisionskontrollsystem GIT

Internet online Update (Internet Explorer)

Einfu hrung in Subversion mit TortoiseSVN

Internet online Update (Mozilla Firefox)

Kurzanleitung zu. von Daniel Jettka

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Medieninformatik Praktikum. Jens Rademacher

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Internet Explorer Version 6

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, , Berlin

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git

TortoiseGit Step by Step Step 1: git for windows herunterladen und installieren.

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

GeoPilot (Android) die App

SharePoint Workspace 2010 Installieren & Konfigurieren

HSR git und subversion HowTo

FTP Tutorial. Das File Transfer Protocol dient dem Webmaster dazu eigene Dateien wie z.b. die geschriebene Webseite auf den Webserver zu laden.

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Versionskontrolle. Verteilte Versionskontrollsysteme. Richard Madsack. 25. November Versionskontrolle. Richard Madsack.

PHPNuke Quick & Dirty

INFOBLATT FÜR DAS NEU AUFSETZEN IHRES COMPUTERS

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Speicher in der Cloud

DOKUMENTATION VOGELZUCHT 2015 PLUS

DNS-325/-320 und FXP

FTP-Server einrichten mit automatischem Datenupload für

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

MESONIC WINLine Jahreswechsel. Umstellung des Wirtschaftsjahres SMC IT AG

Proseminar Unix-Tools CVS Daniel Weber & Zhen Zhang Betreuer: Volker Baier

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Einführung in TexMaker

Eine Einführung in das verteilte Quelltextverwaltungssystem Git

SJ OFFICE - Update 3.0

eprints-anwendertreffen 2013

Einführung in git. Johannes Gilger & Matthias Lederhofer. Rechen- und Kommunikationszentrum der RWTH Aachen Network Operation Center. 14.

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Einführung in Subversion. Tutorium SWP

Erstellen einer PostScript-Datei unter Windows XP

Versionskontrolle mit Subversion

mit dem TeXnicCenter von Andreas Both

eclipse - EGit HowTo

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Informationen zur Verwendung von Visual Studio und cmake

Hex Datei mit Atmel Studio 6 erstellen

Anleitung über den Umgang mit Schildern

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

Nokia Handy - Daten sichern.

Formular»Fragenkatalog BIM-Server«

Handbuch. TMBackup R3

Inhaltserzeichnis. Datenübernahme

Print2CAD 2017, 8th Generation. Netzwerkversionen

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

OP-LOG

Ein Leitfaden für Anfänger unter Zuhilfenahme frei verfügbarer Software! (bei z.b. Google Microsoft Powertoys suchen, oder diesen Link verwenden )

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Transkript:

Having fun with GIT Chris Wewerka Software Development Specialist chris@ twitter.com/longliveenduro plus.google.com/s/chris wewerka

GIT Agenda Verteilte Versionskontrollen - Facts Git Crashkurs Git und SVN Tools und IDE-Integration GitHub

Verteilte Versionskontrolle verteilte Welt verteilte Repositories Erst einmal: kein zentrales Repo mehr kein zentraler Server Lokales Repository ist ein vollwertiges Repository es enthält alle Informationen (Historie) Alle üblichen Repo-Operationen arbeiten lokal Commit Taggen

Verteilte Versionskontrolle Bekannteste Vertreter GIT Mercurial Bazaar Kostenlose OpenSource Repos bei GitHub Kostenlose OpenSource Repos bei Googlecode

Vorteile von GIT http://afrikareisen.info/afrikanische-wild-tiere/raubwild-gepard.htm

Vorteile von GIT Hohe Geschwindigkeit Zentrale Versionssysteme wie SVN gehen immer über das Netzwerk Verteilte Systeme verwenden das Netz nur für den Austausch von Changesets Lokales History-Compare Lokales Taggen/Branchen Lokaler Commit

Vorteile von GIT Unabhängigkeit vom Netz Committen von mehreren Changesets z.b. für verschiedene Features auch ohne Netzwerkverbindung möglich (z.b. Laptop) Lokaler Commit, trotz rotem Jenkins-Job Kann auch genutzt werden, um lokal zu committen auch wenn der Build gebrochen ist, um am nächsten Feature arbeiten zu können für Projekte mit Regel No Commit to broken Build except for Build-Fixer Sync erfolgt später, wenn Build wieder grün In Subversion nicht möglich!

Vorteile Branches + Refactoring + Subversion =

Vorteile von GIT Mergen funktioniert auch mit Refactoring sehr gut! Subversion's Redbook zum Thema Mergen und Moven / Renamen mit Branches: This scenario doesn't work so well right now and is considered one of Subversion's current weak spots aus http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.advanced.moves Tree Conflicts!

Ältere SVN Versionen verlieren die Änderungen vom Trunk: SVN 1.6: immer noch Tree Conflicts für jede umbenannte / verschobene Datei!

Vorteile von GIT Vereinfachung des Austauschens von Sourcecodeänderungen, Beispiel: Erzeugen eines vollwertigen Clones auf Github und Googlecode Einfacher Austausch mit dem Projektowner über den Clone mittels push/pull/merge In SVN müsste man mit Patchfiles per Email arbeiten, da man als Nicht-Projekt-Member kein eigenes Repo hat in das man einchecken kann. Kann man nutzen um im Team direkt mit Kollegen Änderungen auszutauschen, ohne über ein zentrales Repo zu gehen Für Code der z.b. noch nicht reif für alle ist

Nachteile von GIT Keine aktuelleste Version, da Peer-to-Peer Lösung: ein gemeinsames Sync-Repo einführen Wird dann auch von JENKINS verwendet Komplexe Versionsnummern Ähnlich UUIDs Keine fortlaufende Nummer möglich Abhilfe: Tags und Tools verwenden

Mercurial - GIT Warum verwende ich GIT und nicht Mercurial? GIT lässt sich sehr gut mit Subversion zusammen verwenden SVN Unterstützung von Mercurial ist davon weit entfernt

Projekte mit GIT Projekte / Firmen die GIT verwenden: Git Linux Kernel Perl Eclipse Gnome KDE Qt Ruby on Rails Android PostgreSQL Debian X.org Lokalisten.de

Crashkurs Creating and Commiting $ cd (project-directory) $ git init $ (add some files) $ git add. $ git commit -m 'Initial commit' $ git status

Crashkurs Branch git branch Listet Branches auf git branch <branchname> Erzeugt vom aktuellen Branch einen neuen Branch git checkout -b <branchname> Erzeugt vom aktuellen Branch einen neuen Branch und wechselt auf den Branch git checkout <branchname> Wechselt zum Branch

GIT Crashkurs - Mergen Merge Rebase: GIT merge Standard: Eigener Commit für den Merge Merge von Branches, wie wenn die Quellbranches nie existiert hätten == Linearisierung der Commits von beiden Branches Kein eigener Commit für den Rebase

GIT Crashkurs GIT tracked Inhalte nicht Files z.b. rename detection anhand von Ähnlichkeit des Contents Vorteile Nachteil Kein spezielles Kommando nötig für Move & Rename (vgl. SVN und Mercurial mit eigenem Move, bzw. Copy-Delete) Praktisch für Austausch von Änderungen per Plaintext (Mail etc.) Der Algorithmus kann ständig erweitert und verbessert werden ohne Änderungen am Repo Vgl. Probleme mit der Umsetzung von Mergetracking in SVN Funktioniert nur wenn die Files ausreichend ähnlich bleiben

GIT Crashkurs Remote Repositories git push: Sync des eigenen Repos zu einem entferntem Repo git pull: Sync von einem entferntem Repo zum lokalen Repo

GIT stages Aus http://de.gitready.com/beginner/2009/01/21/pushing-and-pulling.html

GIT im Projekt Best Practice: Master GIT Repo einrichten auf dem alle Entwickler pullen/pushen Continuous Integration verwendet dann dieses Master Repo

GIT versus SVN? http://www.dpchallenge.com/image.php?image_id=865535 Für GIT im Projekt beten?

GIT SVN SVN Repo clonen (wie git clone) inkl. aller SVN Branches: git svn clone --stdlayout http://svnurl Dauer: einige Stunden bei großen Repos mit hohen Revisionnummern, da git sein komplettes eigenes Repo lokal aus den SVN Commits rekonstruiert Etwas ändern und lokal in git committen git commit Änderungen der Anderen am SVN Repo holen git svn rebase Eigene Änderungen in's SVN committen (die vorher mit git committet wurden) und auf HEAD updaten: git svn dcommit

GIT SVN & SVN Branches Arbeiten mit SVN Branches 1. git branch -a : Liste von remote/{branchname} SVN Branches 2. git checkout -b local-branchname branchname SVN Branch remote/branchname tracken, d.h. Remote SVN branch als lokalen GIT Branch local-branchname verwenden 3. Auf SVN Branch arbeiten und wie gewohnt (dann auf SVN Branch) dcomitten Mergen zwischen SVN Branches in GIT: Evtl. Lieber SVN Client/SVN checkout verwenden, mergen und danach in GIT Branches updaten Work in Progress: hier funktioniert schon mehr als hier beschrieben

GIT SVN & lokale GIT Branches Arbeiten mit lokalen GIT Branches git checkout -b branchname : lokalen GIT Branch anlegen HACK...HACK..HACK (z.b. Feature XY auf lokalem Branch entwicklen) und wenn fertig: git rebase - no-ff branchname master : Änderungen vom lokalen GIT Branch auf Master, d.h. SVN Trunk übertragen (oder ggf. anderer SVN getrackter Branch) git svn dcommit : Änderungen zum SVN Repo übertragen Vorsicht bei git merge von lokalen GIT Branches zu SVN Branches Da nicht alle Mergefähigkeiten/Möglichkeiten von GIT in SVN abbildbar sind Wenn unbedingt gewünscht: vorher nachlesen was zu tun ist Anfängertipp: Statt git merge immer nur git rebase verwenden! Das ist SAFE!

GIT SVN Trotz notwendiger Vorsicht bei Branches zwischen GIT und SVN: GIT-SVN ist der ideale Weg um GIT-Knowhow aufzubauen Rezept: Erstmal einfach starten, nicht gleich alle Features wollen und einsetzen Empfehlung: Zuerst nur mit SVN Trunk arbeiten, committen (dcommitten) und git Kommandos dabei lernen

Umstieg von SVN auf GIT User Mapping Datei anlegen und einfach das von git svn clone erzeugte Repo verwenden Erzeugt GIT Repo mit vollständiger Historie http://www.jonmaddox.com/2008/03/05/cleanly-migrate-yoursubversion-repository-to-a-git-repository/

GIT - weitere coole Features Charly Pagès doing a Holyman, forty8.com

GIT - weitere coole Features Stashing: sichern der aktuellen Änderungen und restore des ursprünglichen Zustandes Use Case: kurzes zur-seite-legen der aktuellen Arbeit, wenn kein Checkin gemacht werden kann/soll Squashen / History Rewrite Noch lokale Commits zu einem Commit zusammenführen Nicht bei Änderungen durchführen die schon in eine remote Repo gepusht wurden

GIT - weitere coole Features Git bisect Commit der Bug eingeführt hat mit binärer Suche finden $ git bisect start $ git bisect good v2.6.18 $ git bisect bad master Bisecting: 3537 revisions left to test after this [65934a9a028b88e83e2b0f8b36618fe503349f8e] BLOCK: Make USB storage depend on SCSI rather than selecting it [try #6] $ git bisect bad Bisecting: 1769 revisions left to test after this [7eff82c8b1511017ae605f0c99ac275a7e21b867] i2c-core: Drop useless bitmaskings

GIT - weitere coole Features git reflog Alle Aktionen auf dem gesamten lokalen Repo (alle Branches) ansehen oder zurücknehmen

Tools & Windows-Support Git auf Windows msysgit git mit cygwin Eclipse: EGIT Standalone: SmartGIT (kommerziell) TortoiseGIT (Windows) Etliche grafische Tools

GITHUB GIT Protocol HTTP git remote add origin git@github.com:breadfan/githubtest.git git remote add origin http://github.com/breadfan/githubtest.git git push -u origin master git pull origin Branch fehlt? git push --all

Danke, und viel Spaß mit GIT! Chris Wewerka Software Development Specialist chris@ twitter.com/longliveenduro plus.google.com/s/chris wewerka