52
Versionsverwaltung mit Git Kurze Einführung am Beispiel von L A T E X E. Frank Sandig

Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Versionsverwaltung mit GitKurze Einführung am Beispiel von LATEX

E. Frank Sandig

Page 2: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Versionsverwaltung mit Git

WORUM ES HEUTE GEHT

Motivation

Geschichte

Begri�e

Eigenscha�en

Beispiele

Sto� zum Lesen

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 1

Page 3: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Motivation

MOTIVATION

Größere Projekte:

Verfolgen der Projektgeschichte

Zurücknehmen von Änderungen

verteiltes, kollaboratives Arbeiten am Projekt

e�iziente Verwaltung

unkomplizierte Verö�entlichung des �elltextes

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 2

Page 4: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

MOTIVATION

Größere Projekte:

Verfolgen der Projektgeschichte

Zurücknehmen von Änderungen

verteiltes, kollaboratives Arbeiten am Projekt

e�iziente Verwaltung

unkomplizierte Verö�entlichung des �elltextes

2015

-04-

10Motivation

Motivation

Mehr als drei Dateien und mehr als 1000 Worte.

Page 5: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Geschichte

NAMENSHERKUNFT

“I’m an egotistical bastard, and I name all my projects a�ermyself. First ‘Linux’, now ‘Git’.”

Linus Torvalds

“The joke ‘I name all my projects for myself, first Linux,then git’ was just too good to pass up. But it is also short,easy-to-say, and type on a standard keyboard. Andreasonably unique and not any standard command, whichis unusual.”

Linus Torvalds

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 3

Page 6: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Geschichte

ENTSTEHUNG2005 von Linus Torvalds gestartetAnlass: bis dahin für Linux (Kernel) verwendeteVersionsverwaltung BitKeeper bekam neue Lizenz, eswären Gebühren angefallenHauptentwickler heute: Junio HamanoAnforderungen:

1. verteilte Arbeitsweise, Abläufe ähnlich BitKeeper2. sehr hohe Sicherheit gegen unbeabsichtigte und

böswillige Verfälschung3. hohe E�izienz

Punkt 3 wurde nach Torvalds’ Ansicht vom bereitsbestehenden Projekt Monotone nicht erfüllt

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 4

Page 7: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

ENTSTEHUNG2005 von Linus Torvalds gestartetAnlass: bis dahin für Linux (Kernel) verwendeteVersionsverwaltung BitKeeper bekam neue Lizenz, eswären Gebühren angefallenHauptentwickler heute: Junio HamanoAnforderungen:

1. verteilte Arbeitsweise, Abläufe ähnlich BitKeeper2. sehr hohe Sicherheit gegen unbeabsichtigte und

böswillige Verfälschung3. hohe E�izienz

Punkt 3 wurde nach Torvalds’ Ansicht vom bereitsbestehenden Projekt Monotone nicht erfüllt20

15-0

4-10

Geschichte

Entstehung

Arten der E�izienz:

• e�iziente Befehle (wenig bewirkt viel)

• e�iziente Speicherung (geringer Overhead der Verwaltung);Commits, Branches, ...

• e�iziente interne Arbeitsweise (schnelle Ausführung)

Page 8: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Geschichte

ALTERNATIVEN

verteilte Versionsverwaltung:MonotoneBitKeeperMercurialBazaarGNU arch

zentrale Versionsverwaltung:Apache Subversion (svn)

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 5

Page 9: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

ALTERNATIVEN

verteilte Versionsverwaltung:MonotoneBitKeeperMercurialBazaarGNU arch

zentrale Versionsverwaltung:Apache Subversion (svn)20

15-0

4-10

Geschichte

Alternativen

auch: lokale Versionsverwaltung, eher selten

Page 10: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Geschichte

VERWENDUNG

zahlreiche Opensource-Projekte, z. B.:

Amarok, Android, BusyBox, CMake, Debian, DragonFlyBSD, Drupal, Eclipse, Erlang, Fedora, Git selbst, Gnome,Joomla, j�ery, JUnit, KDE, LibreO�ice, LilyPond,Linux-Kernel, Linux Mint, MediaWiki, node.js, OneLaptop per Child, OpenFOAM, Perl 5, Parrot und Rakudo(Perl 6), PHP, phpBB, Plone, PostgreSQL, Qt, Ruby onRails, Ruby, Samba, Scala, TaskJuggler, TYPO3, VLC mediaplayer, Wine, x264 und X.org uvm.

neu Nov. 2014: GNU Emacs, Google Go

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 6

Page 11: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE

TextdateiEine Datei, welche unformatierten Text im ASCII-Format (oderkompatibel), also eine direkt druckbare Zeichenfolge, enthält.Insbesondere existieren Zeilenumbrüche. Bei LATEX primär der �elltext,ferner auch .bib-Datenbanken, Hilfs- und Logdateien und ähnliches.Menschenlesbar.

BinärdateiMaschinenlesbare Datei. Benötigt zur Anzeige für den Menschen einenInterpreter (fertige PDF-Datei) oder ist selbst eine ausführbare Datei(.exe). Weiter gefasst alles, was kein reiner Text ist.

Beide Arten werden von Git unterschiedlich behandelt: → Commit.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 7

Page 12: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE IIRepository

Lager, Depot. Übertragen: Projektarchiv. Verwaltetes Verzeichniszur Speicherung und Beschreibung von digitalen Objekten, also z. B.Ordner mit Dateien + Verwaltungsinformationen hinter einerInfrastruktur. Der Speicherort kann lokal oder entfernt sein. Der Befehlgit init macht einen Ordner durch erstellen derVerwaltungsinformationen zum Repository.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 8

Page 13: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE IIIForkGabel. Übertragen: Abspaltung. Vollständige Kopie eines Projektes,welche unabhängig weiterentwickelt werden kann. Insbesonderemindestens ein vollständiges Repository mit untergliederten →Branches, welches die gesamte Projektgeschichte enthält. Der Forkkann dem ursprünglichen Projekt über → Pull Requests und/oder einen→ Upstream Branch verbunden bleiben. Forks sind im Rahmen verteiltentwickelter Projekte ein reguläres Arbeitsmi�el (Fork = Arbeitskopie).Linus Torvalds’ Betriebssystemkern Linux wurde auf GitHub über 7500Mal (01/2015) geforkt, in der Regel, um Änderungen zum Projektbeizutragen, nicht, um ein neues Projekt zu gründen.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 9

Page 14: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE IVBranchZweig. Jede verwaltete Ableitung des Arbeitsverzeichnisses isttechnisch ein Branch. In der Regel eine Abspaltung innerhalb desProjektes, z.B. zum Erstellen einer neuen Hauptversion oder zurgetrennten Entwicklung einer bestimmten Funktion. In großenLATEX-Projekten können einzelne Kapitel in getrennten Zweigenentwickelt werden. Zweige eines Projektes können verschmolzenwerden: → Merge.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 10

Page 15: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE VRemoteEntferntes Repository. Dies kann ein Remote Tracking Branch zurVerö�entlichung und Sicherung des �elltextes sein (lesen undschreiben) oder ein → Upstream Repository (nur lesen). Ein Remote istimmer auch ein Branch.

CommitBegehen, einprägen. Übertragen: Beitrag, Revision. Gesamtheitder gemeinsam übergebenen (und freigeschalteten) Änderungen einerArbeitsphase. Dazu zählen die zeilenweisen Änderungen derTextdateien und die vollständigen veränderten Binärdateien.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 11

Page 16: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE VIOrigin

Bezeichnet den primären Remote Tracking Branch eines Repositorys.

MasterAusgangszweig eines Projektes. Wird beim initialisieren automatischerstellt. Primärer Arbeitszweig.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 12

Page 17: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE VIIUpstream

Stromaufwärts. Übertragen: Sender/�elle. Ein Repository, aufwelches vom Arbeitsverzeichnis aus nur lesend zugegri�en wird.Änderungen können von Upstream direkt in Master verschmolzenwerden. Umgekehrt ist ein → Pull (Request) nötig. In der Regel wirdnach einem Fork das Ausgangsrepository als Upstream definiert.

FetchAbholen. Kopieren von Commits aus einem entfernten Repository(z. B. Upstream oder Origin) in den gleichnamigen Zweig des lokalenRepositorys. Beispiel: git fetch upstream

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 13

Page 18: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE VIIIPushSchieben. Senden von Commits aus einem Zweig des lokalenRepositorys in ein entferntes Repository. Beispiel: git pushorigin master

PullZiehen. Übernahme von Commits aus einem Fork in dasAusgangsprojekt durch den Besitzer des Ausgangsrepositorys.Verbunden mit einem → Merge.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 14

Page 19: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE IXPull Request

Zug-Anfrage. Anfrage eines Autors von Änderungen, diese aus dessenFork in das ursprüngliche Projekt zu übernehmen. Wird in der Regelüber das Webinterface des Git-Servers ausgelöst.

Di�Di�erenz. Zeilenweises Anzeigen von Unterschieden in Textdateiendes Projektes und Anzeige der geänderten Binärdateien. Der StilEntspricht dem Unix-Programm di�. Es ist die Anzeige bezüglicheinzelner Commits, einzelner Zweige, eines Stichdatums oder einesZeitraumes möglich.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 15

Page 20: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE XMerge

Verschmelzen. Übernahme sämtlicher Commits eines Zweiges ineinen anderen, wonach die Zweige synchron sind. Beispiel: gitmerge upstream/master

CloneKlonen. Erstellen einer vollständigen Kopie eines anderen Repositorys.Die �elle kann lokal oder entfernt sein, das Ziel ist standardmäßig einUnterordner im aktuellen Verzeichnis. Notwendig, um eine lokaleArbeitskopie eines geforkten Projekts zu erstellen. Die angegebene�elle wird automatisch als Origin definiert. Beispiel: git clonehtt-ps://[email protected]/Ekkehardt/linux.git

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 16

Page 21: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Begri�e

BEGRIFFE XI

HashZeichenfolge fester Länge, welche aus Eingabedaten beliebiger Längeüber eine Hashfunktion berechnet wird. Kleine Änderungen an denEingabedaten bewirken große Änderungen im Hash. Dient zumNachweis der Integrität der Daten und zur Identifikation der einzelnenCommits. Entspricht folglich einer Prüfsumme und Revisionsnummer.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 17

Page 22: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Eigenscha�en

EIGENSCHAFTEN

nicht-lineare EntwicklungErstellen und Verschmelzen von Entwicklungszweigen; e�izienteImplementierung der Zweige.

kein zentraler ServerJeder Entwickler besitzt eine Arbeitskopie mit der gesamtenProjektgeschichte. Alle Remotes und lokale Kopien sind technischgleich.

Datentransfer zwischen Repositorysfile://, git://, ssh://, h�p://, h�ps://, �p:// oder rsync://

Kryptographische Sicherheit der ProjektgeschichteDer Hash eines einzelnen Commits basiert auf der vollständigenGeschichte, die zu diesem Commit geführt hat; markieren undsignieren (GPG) einzelner Commits.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 18

Page 23: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Eigenscha�en

EIGENSCHAFTEN II

Speichersystem und DateiversionierungEs erhält nicht jede Datei eine Revisionsnummer, wie bei CVS,sondern es werden Verweise ähnlich einem Dateisystemgespeichert. Ändert sich eine Datei nicht, ist kein erneutesSpeichern nötig.

Säubern des RepositorysDaten aller Commits und Zweige bleiben bis zum explizitenlöschen vorhanden, um Änderungen zurücknehmen zu können.

InteroperabilitätÜber Hilfsprogramme: Austausch mit GNU arch (git-archimport),CVS (git-cvsexportcommit, git-cvsimport und git-cvsserver), Darcs(darcs-fastconvert, darcs2git und andere), �ilt (git-quiltimport)und Subversion (git-svn).

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 19

Page 24: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Eigenscha�en

EIGENSCHAFTEN III

Web-InterfaceGitweb, git-tf, GitHub, bitbucket, . . .

Läu� auf fast allen modernen unixartigen Systemen, wie Linux,Solaris, Mac OS X, FreeBSD, DragonFly BSD, NetBSD, OpenBSD,AIX, IRIX und Haiku.

Unter Microso� Windows mit dem Client von GitHub, mit Hilfeder Cygwin-Umgebung, mit Msysgit oder derTortoiseGit-Shell-Erweiterung anwendbar.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 20

Page 25: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Eigenscha�en

AUFBAU EINES LOKALEN REPOSITORYS

Abb. 1: lokales Repository dieses Vortrages

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 21

Page 26: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Eigenscha�en

AUFBAU EINES LOKALEN REPOSITORYS II

Abb. 2: die Datei .gitignore

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 22

Page 27: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Eigenscha�en

AUFBAU EINES LOKALEN REPOSITORYS III

Abb. 3: die Datei README.md

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 23

Page 28: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

MIT LEEREM REMOTE-REPO BEGINNEN

- repo anlegen (Homepage)- in Ordner mit zu verwaltenden Daten wechseln

git initgit add -Agit commit -m "erster Commit"git remote add origin https://[email protected]/

User/repo.gitgit push -u origin master

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 24

Page 29: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

REMOTES LÖSCHEN

git remote remove originVersion 1.7.10 und vorher: git remote rm origin

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 25

Page 30: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

REMOTES UMZIEHEN

- neues Remote anlegen (Homepage)

git remote set-url origin https://new.url.heregit push -u origin master

- altes Remote löschen (Homepage)

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 26

Page 31: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

REPO KLONEN

- ggf. zuerst auf HP forken

git clone https://github.com/User/repo.git

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 27

Page 32: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ZURÜCKGEBEN

git add -Agit commit -m "Update message"git push origin master

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 28

Page 33: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

ÄNDERUNGEN ZURÜCKGEBEN

git add -Agit commit -m "Update message"git push origin master

2015

-04-

10Beispiele

Änderungen zurückgeben

Origin ist bereits definiert; evtl Pull-Request über Homepage

Page 34: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN VOM UR-REPO HOLEN

git remote add upstream https://github.com/andererUser/ursrungsrepo.git

git fetch upstreamgit merge upstream/master

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 29

Page 35: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

MANUELL MERGEN

git mergetool

z. B. opendi�, kdi�3, tkdi�, xxdi�, meld, tortoisemerge, gvimdi�,di�use, di�merge, ecmerge, p4merge, araxis, bc3, codecompare,emerge, vimdi�

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 30

Page 36: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN

Zustand des Repos:git status

grafisch:gitk

Liste aller Commits mit ihrem SHA1-Hash:git log

in einem bestimmten Commit:git diff "@{e1b9}"

seit gestern:git diff "@{yesterday}"

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 31

Page 37: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN II

seit dem 2. Januar 1970:git diff "@{1970-01-02}"

zwischen irgendeiner Version und der vorvorletzten:git diff 1b6d "master~2"

alle Commits der letzten zwei Wochen:git whatchanged --since="2 weeks ago"

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 32

Page 38: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN III

Abb. 4: Das Programm gitk

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 33

Page 39: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

ÄNDERUNGEN ANZEIGEN III

Abb. 4: Das Programm gitk

2015

-04-

10Beispiele

Änderungen Anzeigen III

gitk muss in der Regel nachträglich installiert werden

Page 40: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN IV

Abb. 5: Ausgabe des Befehls git log

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 34

Page 41: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN V

Abb. 6: Ausgabe des Befehls git diff "@{yesterday}"

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 35

Page 42: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN VI

Abb. 7: Ausgabe des Befehls git whatchanged –since="2 weeks ago"

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 36

Page 43: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN ANZEIGEN VII

Abb. 8: Die Oberfläche gitweb

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 37

Page 44: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ÄNDERUNGEN RÜCKGÄNGIG MACHEN

unwiederbringlich zum angegebenen Stand zurückkehren:

git reset --hard 766f

angegebenen Commit rückgängig machen (als neuenCommit):

git revert 1b6d

letzten veröffentlichten Stand wiederherstellen:git fetch origingit merge origin/master

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 38

Page 45: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

REPO NEU PACKEN

git gc --auto

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 39

Page 46: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

DATEI AUS ALLEN COMMITS LÖSCHEN

git filter-branch --prune-empty --index-filter "gitrm --cached -f \--ignore-unmatch Dateiname.pdf

" -- --all

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 40

Page 47: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

DATEI AUS ALLEN COMMITS LÖSCHEN

git filter-branch --prune-empty --index-filter "gitrm --cached -f \--ignore-unmatch Dateiname.pdf

" -- --all

2015

-04-

10Beispiele

Datei aus allen Commits löschen

Nach git filter-branch muss das remote gelöscht und neu angelegt werden, danachein push. Sonst entstehen unlösbare Konflikte.

Page 48: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ARBEITEN MIT ZWEIGEN

Zweige anzeigen:git branch

Zweig anlegen:git branch NAME

in Zweig wechseln:git checkout NAME

Anlegen und Wechseln gleichzeitig:git checkout -b NAME

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 41

Page 49: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Beispiele

ARBEITEN MIT ZWEIGEN II

Zweige verschmelzen:git merge QUELLE/ZIEL

Zweige löschen:git branch -d NAME

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 42

Page 50: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Sto� zum Lesen

WEITERE INFORMATIONEN

[1] URL: h�ps://www.atlassian.com/de/git/tutorial/git-basics.

[2] URL: h�p://git-scm.com/book/de.

[3] URL: h�p://git-scm.com/documentation.

[4] URL: h�p://rogerdudler.github.io/git-guide/index.de.html.

[5] URL:h�p://www-cs-students.stanford.edu/~blynn/gitmagic/intl/de.

[6] URL: h�p://mbork.pl/2014-10-18_Version_Control_Systems.

[7] URL: h�p://svij.org/blog/2014/10/25/git-fur-einsteiger-teil-1.

[8] URL: h�p://svij.org/blog/2014/11/01/git-fur-einsteiger-teil-2.

[9] URL: h�p://svij.org/blog/2015/01/05/was-ist-git/.

[10] URL: h�p://svij.org/blog/2015/01/12/git-fur-einsteiger-teil-3/.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 43

Page 51: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Sto� zum Lesen

WEITERE INFORMATIONEN II

[11] URL: h�p://wiki.ubuntuusers.de/Git.

[12] URL: h�p://git-scm.com.

[13] URL: h�p://de.wikipedia.org/wiki/Git.

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 44

Page 52: Versionsverwaltung mit Git - ekkehardt.lima-city.de · Geschichte NAMENSHERKUNFT “I’m an egotistical bastard, and I name all my projects a˝er myself. First ‘Linux’, now ‘Git’.”

Ende der Präsentation

VIELEN DANK! – NOCH FRAGEN?

schri�[email protected]�p://github.com/EkkehardtEkkehardt in #latex-de auf irc.freenode.net, aufh�p://texwelt.de und im Forum unterh�p://www.golatex.dePräsentation unter h�p://sandig-fg.de und in Kürzeunter h�p://www.suedraum.de/latex/stammtisch

TU Bergakademie Freiberg | LATEX-Stammtisch | E. Frank Sandig | Versionsverwaltung mit Git | Studentenclub Erdalchi-misten e. V. (EAC) Freiberg | 29.01.2015 45