VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus...

18
Enes Kurnaz, Oliver Nagel Institut für Mathematik und Informatik Versionsverwaltung mit Git

Transcript of VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus...

Page 1: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

1

Enes  Kurnaz,  Oliver  NagelInstitut  für  Mathematik  und  Informatik

Versionsverwaltung  mit  Git

Page 2: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

2Versionsverwaltung  mit  Git,  17.  März  2016

Inhalt  

● Einführung  -­ Was  bedeutet  Versionsverwaltung?

● Git-­ Geschichte-­ Funktionsweise-­ Terminologie

● erste  Schritte  mit  Git

● Git  zur  Zusammenarbeit  benutzen-­ Syncing-­ Branches

Page 3: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

3

Was  bedeutet  Versionsverwaltung?

● System  zum  Management  der  Änderung  von  Dokumenten,  Dateien  und  anderen  Sammlungen  von  Daten

● Einsatz  vor  allem  in  der  Softwareentwicklung

● Hauptaufgaben  einer  Versionsverwaltung:-­ Dokumentationsfunktion-­ Wiederherstellungsfunktion-­ Koordination  des  Zugriffs  auf  Dokumente  und  der  Arbeit  an  einem  Projekt

Page 4: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

4

Git-­ Beginn  der  Entwicklung  von  Linus  Torvalds  im  April  2005

-­ Ersatz  für  BitKeeper  in  der  Linux-­Kernel-­Entwicklung

-­ verteilte  Versionkontrolle-­ geschrieben  in  C-­ unter  GNU  GPL  Lizenz-­ verfügbar  für  fast  alle  unixoiden  Betriebsysteme

-­ Windowsportierung  existiert

Page 5: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

5

Terminologie● Branch

-­ Abspaltung  von  einer  ursprünglichen  Version  der  Entwicklung-­ hat  eigene  Versionsgeschichte

● Merging-­ Zusammenführen  von  zwei  Branches-­ Fast-­Forward-­Merging  und  3-­Way-­Merging

● Fork-­ neuer  Branch  in  unabhängiger  Versionsverwaltung

● Master-­ Hauptentwicklungszweig-­ unterscheidet  sich  technisch  nicht  von  anderen  Branches

Page 6: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

6

Funktionsweise● Inhalte  eines  Projektes  liegen  in  Verzeichnissen  (Repositorys)● Änderungen  werden  in  Arbeitskopie  durchgeführt● Übertragen  einer  Version  aus  einem  Repository  in  die  Arbeitskopie  wird  Checkout  genannt

● das  Übertragen  der  Änderungen  in  der  Arbeitskopie  in  das  Repository  wird  Commit  genannt

● Git  verwendet  verteilte  Versionsverwaltung,  d.h.  jeder  Bearbeitende  verfügt  über  eine  eigene  Kopie  des  Repositorys  incl.  lokaler  Versionsgeschichte  und  Branchstruktur

● der  Austausch  von  Daten  zwischen  Repositorys  ist  möglich● zudem  ist  Branching  und  Forking  ein  integraler  Bestandteil  von  Git

Page 7: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

7

Setting  up  a  repository● git  init  -­ Erstellt  Git  Repository

● bare  Repositories  -­ Erstellt  schreibgeschützteGit  Repository  mit  der  -­-­bare  flag

● git  clone  -­ Kopiert  vorhandenes  Repository

● git  config  -­ Konfiguration  der  Git  Installation

Page 8: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

8

Saving  changes● git  add  -­ Fügt  die  Änderungen  zum  Sammelpunkt(staging  area)  hinzu

● git  commit  -­ Führt  die  Änderungen  durch,  die  zu  der  staging  area  hinzugefügt  wurden

Page 9: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

9

Inspecting  a  repository● git  status  -­ Zeigt  an,  welche  Änderungen  in  der  staging  area/Arbeitsordner  durchgeführt  wurden  und  welche  Dateien  nicht  rückverfolgt  werden

● git  log  -­ Zeigt  die  verbindlichen  Änderungen  an

Page 10: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

10

Undoing  changes● git  checkout  -­ Prüft  Dateien  &  commits● git  revert  -­ Hebt  einzige  Änderung(commit)  auf● git  reset  -­ Geht  zu  einem  früheren  Zustand● git  clean  -­ Entfernt  Dateien  die  nicht  rückverfolgt

werden  können

Page 11: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

11

Rewriting  history● git  commit  -­-­amend  -­ editiert  frühere  Änderung(commit)  

● git  rebase  -­ Ändert  die  Position  voneinem  Zweig(Branch)○ mit  der  -­i  flag  können  detaillierte

Änderungen  durchgeführt  werden

Page 12: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

12

Git  zur  Zusammenarbeit  benutzen

● Syncing-­ git  remote-­ git  fetch/  git  pull-­ git  push

● Branches-­ git  branch-­ git  checkout-­ git  merge

Page 13: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

13

Syncing  -­ git  remote  -­ Austausch  von  Informationen  zwischen  Repositorys  erfolgt  nicht  automatisch

-­ Verwaltung  von  Remote-­Verbindungen  zu  anderen  Repositorys

-­ bei  Verwendung  von  git  clone  wird  automatisch  eine  Remote-­Verbindung  zu  geklonten  Repo  angelegt

-­ auch  Verbindung  zu  Repositorys  von  anderen  Bearbeitenden  kann  von  Vorteil  sein

Page 14: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

14

Syncing  -­ git  fetch/git  pull● git  fetch

-­ Abrufen  von  Branches  aus  Remote-­Repos-­ Commits  aus  Remote-­Verbindungen  können  betrachtet  und  bewertet  werden

-­ Remote-­Branches  können  in  das  lokale  Arbeitsverzeichnis  gemerged  werden

● git  pull-­ Zusammenfassung  von  git  fetch  und  git  merge  zu  einem  Befehl

Page 15: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

15

Syncing  -­ git  push-­ Commits  aus  dem  lokalen  Repository  in  Remote-­Repository  exportieren

-­ häufigster  Anwendungsfall  ist  das  pushen  in  ein  zentrales  Projektrepository

-­ zwischenzeitliche  Änderungen  im  Remote-­branch  könnten  durch  git  push  überschrieben  werden

-­ git  erlaubt  daher  nur  pushes  in  Remote-­Branches,  wenn  merge-­Prozess  “fast  forward”  für  den  Remote-­branch  ist

Page 16: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

16

Branches  -­ git  branch● mit  git  branch  können  Branches  erstellt,  umbenannt  und  gelöscht  werden

● integraler  Bestandteil  der  Arbeit  mit  Git● Änderungen  im  Repo  können  abgekapselt  behandelt  werden

● Master-­Branch  kann  vor  instabilen  oder  fehlerhaftem  Code  bewahrt  werden

● mit  git  branch  -­d  [branch  name]  können  Branches  gelöscht  werden

Page 17: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

17

Branches  -­ git  checkout● mit  git  checkout  [existing_branch]  kann  zwischen  den  lokalen  Branches  gewechselt  werden

● ausgewählter  Branch  wird  in  das  Arbeitsverzeichnis  übertragen

● mit  git  checkout  [new_branch]  wird  ein  neuer  Branch  erstellt  und  in  das  Arbeitsverzeicchnis  übertragen

● erlaubt  das  parallele  Bearbeiten  von  verschiedenen  Features  in  einem  Repository

Page 18: VersionsverwaltungmitGit - Freie Universität · 4 Git A Beginn/der/Entwicklung/von/Linus Torvaldsim/April/2005 A Ersatzfür/BitKeeper/in/der/Linux A KernelAEntwicklung A verteilte/Versionkontrolle

18

Branches  -­ git  merge● mit  git  merge  [branch]  können  Branches  zusammengefügt  werden● benannter  Branch  wird  in  das  aktuelle  Verzeichnis  gemerged,  der  benannte  Branch  bleibt  unverändert

● abhängig  von  der  Revisionsnummer  des  Verzeichnisses  wird  zwischen  Fast-­Forward-­Merge  und  3-­Way-­Merge  unterschieden

● Git  wählt  den  Merge-­Algorithmus  selbstständig  aus● FF-­Merging  oft  bei  kleineren  Änderungen  angewendet● 3-­Way-­Merging  wird  oft  zur  Integration  von  Features  mit  längerer  Entwicklungszeit  verwendet