8.)Version)Control)with)Git -...

103
Software Engineering Software Engineering 8. Version Control with Git Jonathan Brachthäuser

Transcript of 8.)Version)Control)with)Git -...

Page 1: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Software  Engineering8.  Version  Control  with  Git

Jonathan  Brachthäuser

Page 2: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Einordnung:  Zusammenfassung

2

!

Problem

"Anforderung

Anforderungsermittlung  -­‐ (Nicht-­‐)funktionale  Anf.  -­‐ Anwendungsfälle  -­‐ Userstories

Modellierung  -­‐ UML  -­‐ OO-­‐Design  -­‐ Design  /  Architektur  Patterns  -­‐ SOLID  Design  Prinzipien  -­‐ GRASP

Continuous  Delivery  &  Feedback

Testing  

/  TDD  /  

BDD

Realisierung  -­‐ Programmierrichtlinien  -­‐ Code  Smells  -­‐ Versionsverwaltung  -­‐ Continuous  Integration  -­‐ Code  Reviews  -­‐ Pair  Programming  -­‐ Dokumentation

#

Lösung

$Entwurf

Page 3: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering3

Online  verfügbar  unter:  https://git-­‐scm.com/book/en/v2Onlinetutorials  auf:  https://try.github.io  und  http://gitreal.codeschool.com/  Außerdem:  Übungsblätter  zu  git  sind  auf  der  Vorlesungsseite  zu  finden

Literaturempfehlung

Page 4: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Versionskontrolle

Page 5: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Was  ist  Versionskontrolle?

5

} Ein  Versionskontrollsystem  (VCS)  speichert  } ...  den  Inhalt  aller  Dateien  eines  Projektes  } ...  die  gesamte  Änderungsgeschichte  eines  Projektes

} Wer  hat  wann  und  warum,  welche  Dateien  wie  geändert?

Page 6: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Wozu  Versionskontrolle?

6

} Zurücksetzen  des  Projektes  auf  einen  früheren  Stand  } Dokumentation  der  Projektgeschichte  und  der  Beiträge  verschiedener  Entwickler  

} Parallele  Entwicklung  an  mehreren  Entwicklungszweigen  } Koordination  der  Arbeit  verschiedener  Entwickler

Page 7: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

7

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 8: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

8

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 9: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

9

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 10: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Wo  ist  das  Repository  gespeichert?

10

} Lokale  Versionskontrollsysteme

Local Computer

RepositoryWorking Copy

File 1

File 2

Version 1

Version 2

Version 3

Page 11: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Wo  ist  das  Repository  gespeichert?

11

Central VCS Server

Repository

Computer A

Working Copy

File 1

File 2

Version 1

Version 2

Version 3

Computer B

Working Copy

File 1

File 2

Computer C

Working Copy

File 1

File 2

} Zentrale  Versionskontrollsysteme

Page 12: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Wo  ist  das  Repository  gespeichert?

12

} Verteilte  Versionskontrollsysteme

Computer A

Repository

Working Copy

File 1

Version 3...

...

Computer B

Repository

Working Copy

File 1

Version 3...

...

Server Computer

Repository

Version 3...

Page 13: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

13

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 14: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

14

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 15: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Diffs

15

answer = 7 factor = 3 while (answer < 60) { answer *= factor factor += 1 } vorher

answer = 7 factor = 2 while (answer < 40) { answer *= factor factor += 1 } nachher

answer = 7 -factor = 3 -while (answer < 60) { +factor = 2 +while (answer < 40) { answer *= factor factor += 1 } diff

Page 16: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Was  ist  im  Repository  gespeichert?

16

} Diff  basierte  Versionskontrollsysteme

Version 1

File A

Veränderung über die Zeit

File B

File C

Version 2

Δ1

Version 3

Δ1 Δ2

Page 17: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Was  ist  im  Repository  gespeichert?

17

} Snapshot  basierte  Versionskontrollsysteme

Version 1

File A

Veränderung über die Zeit

File B

File C

Version 2

A1

C1

B

Version 3

C2

B

A1

Page 18: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

18

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 19: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

19

} Repository  } Änderungsgeschichte  und  Dateiinhalte  für  alle  Versionen  

} Arbeitskopie  } Kopie  aller  Dateien  einer  Version  

} Status  } Zusammengefasster  Unterschied  zwischen  der  Working  Copy  und  dem  Repository

} Diff  } Unterschiede  der  Dateien  

zwischen  Repository  und  Arbeitskopie  oder  anderer  Version  

} Checkout  } Dateiinhalte  einer  Version  

aus  Repository  in  Working  Copy  kopieren  

} Commit  } Derzeitigen  Stand  der  

Working  Copy  als  neue  Version  in  das  Repository  übernehmen

Page 20: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git

Page 21: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Was  ist  git?

21

} Verteiltes  Versionskontrollsystem  } Ursprünglich  von  Linus  Torvalds  zur  Versionskontrolle  des  Linux  Kernels  entwickelt  

} Heute  weit  verbreitet  in  Open  Source,  als  auch  zur  proprietären  Entwicklung

Page 22: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Wie  funktioniert  git?

22

} Verteilt  } Snapshot-­‐basiert  } Effiziente  Speicherung  durch  Hash-­‐Adressierung  } Index  } Viele  Kommandozeilenbefehle

Page 23: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Drei  Schritte  in  Git

23

} Git  unterscheidet  zwischen  Working  Copy,  Staging  Area  und  Repository

Computer

RepositoryWorking Copy Staging Area

Copy project (checkout)

Stage changes (add) Confirm (commit)

Page 24: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering24

~ mkdir my-prog

Page 25: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering25

~ mkdir my-prog ~

% my-prog

Page 26: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering26

~ mkdir my-prog ~ ~ cd my-prog

% my-prog

Page 27: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering27

~ ~ cd my-prog ~/my-prog

% my-prog

Page 28: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering28

~ ~ cd my-prog ~/my-prog git init

% my-prog

Page 29: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering29

~/my-prog git init Initialized empty Git repository in ~/my-prog/.git/

% my-prog % .git

Page 30: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering30

~/my-prog git init Initialized empty Git repository in ~/my-prog/.git/

% my-prog % .git & Hello.java

Page 31: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering31

% my-prog % .git & Hello.java

Initialized empty Git repository in ~/my-prog/.git/ ~/my-prog git add Hello.java

Page 32: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering32

% my-prog % .git & Hello.java

& Hello.java

~ cd my-prog ~/my-prog git add Hello.java ~/my-prog

index

Page 33: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering33

% my-prog % .git & Hello.java

& Hello.java

~ ~ cd my-prog ~/my-prog git add Hello.java ~/my-prog git commit -m "Add hello"

index

Page 34: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering34

% my-prog % .git & Hello.java

9ad66d3

& Hello.java

HEAD master

treeindex

~/my-prog git commit -m "Add hello" [master 9ad66d3] Add hello 1 file changed, 5 insertions (+)

Page 35: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering35

9ad66d3

& Hello.java

treeindex

~/my-prog git commit -m "Add hello" [master 9ad66d3] Add hello 1 file changed, 5 insertions (+)

% my-prog % .git & Hello.java % lib & Util.java

HEAD master

Page 36: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering36

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java

tree

~/my-prog git add lib/Util.java

index

HEAD master

Page 37: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering37

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

tree index

~/my-prog git add lib/Util.java ~/my-prog

HEAD master

Page 38: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering38

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

tree index

~/my-prog git add lib/Util.java ~/my-prog git commit -m "Add util"

HEAD master

Page 39: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering39

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

f146864parent

tree treeindex

~/my-prog git commit -m "Add util" [master f146864] Add util 1 file changed, 3 insertions (+)

HEAD master

Page 40: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

~/my-prog git commit -m "Add util" [master f146864] Add util 1 file changed, 3 insertions (+)40

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

f146864parent

tree treeindex

HEAD master

Page 41: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering41

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

f146864parent

tree treeindex

~/my-prog git add Hello.java

HEAD master

Page 42: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering42

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

& Hello.java % lib & Util.java

f146864parent

tree tree index

~/my-prog git add Hello.java ~/my-prog

HEAD master

Page 43: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering43

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

& Hello.java % lib & Util.java

f146864parent

tree tree index

~/my-prog git add Hello.java ~/my-prog git commit -m "Add bye"

HEAD master

Page 44: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering44

~/my-prog git commit -m "Add bye" [master 153b94c] Add bye 1 file changed, 1 insertions (+)

% my-prog % .git & Hello.java % lib & Util.java

9ad66d3

& Hello.java & Hello.java % lib & Util.java

& Hello.java % lib & Util.java

f146864 153b94cparent parent

tree tree treeindex

HEAD master

Page 45: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Demo

(init,  status,  diff,  add  (-­‐p),  diff  -­‐-­‐  staged,  checkout,  commit,  log)

Page 46: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Die  wichtigsten  Befehle  (1  /  4)

46

} git  helpListe  wichtiger  Befehle

} git  help  commandHilfe  zu  einzelnen  Befehlen

} git  initNeues  Repository  initialisieren

} git  addArbeitskopie  →  Index

} git  checkoutIndex  →  Arbeitskopie

} git  commitIndex  →  Repository

Page 47: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Die  wichtigsten  Befehle  (2  /  4)

47

} git  statusInformationen  zur  Arbeitskopieund  HEAD  anzeigen

} git  show  commitInformationen  zu  Commit  zeigen

} git  reflogEntwicklung  von  HEAD  zeigen

} git  diffArbeitskopie  vs.  Index

} git  diff  -­‐-­‐stagedIndex  vs.  Head

} git  logÄnderungsgeschichte  zeigen

Page 48: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Branches  &  Merging

Page 49: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering49

~/my-prog

master

543

HEAD

Page 50: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering50

~/my-prog git add ~/my-prog

master

543

HEAD

Page 51: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering51

~/my-prog git add ~/my-prog git commit

~/my-prog

master

6f5parent

543

HEAD

Page 52: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering52

~/my-prog git add ~/my-prog git commit ~/my-prog git branch experiment

~/my-prog

master

6f5parent

543

experiment

HEAD

Page 53: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering53

~/my-prog git add ~/my-prog git commit ~/my-prog git branch experiment

~/my-prog git checkout experiment

master

6f5parent

543

experiment

HEAD

Page 54: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering54

~/my-prog git checkout experiment ~/my-prog

HEAD

master

6f5parent

543

experiment

Page 55: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering55

~/my-prog git checkout experiment ~/my-prog git add ~/my-prog

HEAD

master

6f5parent

543

experiment

Page 56: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering56

~/my-prog git checkout experiment ~/my-prog git add ~/my-prog git commit ~/my-prog

HEAD

master

parent

6f5parent

543

experiment

b43

Page 57: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering57

~/my-prog git checkout experiment ~/my-prog git add ~/my-prog git commit

~/my-prog git add ~/my-prog

HEAD

master

parent

6f5parent

543

experiment

b43

Page 58: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering58

~/my-prog git checkout experiment ~/my-prog git add ~/my-prog git commit

~/my-prog git add ~/my-prog git commit ~/my-prog

HEAD

master

parent

parent

6f5parent

543

experiment

aa4b43

Page 59: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering59

~/my-prog git checkout experiment ~/my-prog git add ~/my-prog git commit

~/my-prog git add ~/my-prog git commit ~/my-prog git checkout master

HEAD

master

parent

parent

6f5parent

543

experiment

aa4b43

Page 60: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering60

~/my-prog git checkout master ~/my-prog

HEADmaster

parent

parent

6f5parent

543

experiment

aa4b43

Page 61: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering61

~/my-prog git checkout master

~/my-prog git add ~/my-prog

HEADmaster

parent

parent

6f5parent

543

experiment

aa4b43

Page 62: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering62

~/my-prog git checkout master

~/my-prog git add

~/my-prog git commit ~/my-prog

HEADmaster

parent

c85

parent

6f5parent

543

experiment

aa4b43

parent

Page 63: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering63

~/my-prog git checkout master

~/my-prog git add

~/my-prog git commit

~/my-prog git add ~/my-prog

HEADmaster

parent

c85

parent

6f5parent

543

experiment

aa4b43

parent

Page 64: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering64

~/my-prog git checkout master

~/my-prog git add

~/my-prog git commit

~/my-prog git add ~/my-prog git commit ~/my-prog

HEADmaster

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

Page 65: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering65

~/my-prog git checkout master

~/my-prog git add

~/my-prog git commit

~/my-prog git add ~/my-prog git commit ~/my-prog git merge experiment

HEADmaster

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

Page 66: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

parent

66

~/my-prog git merge experiment ~/my-prog

HEADmaster

a23

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

parent

Page 67: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

parent

67

~/my-prog git merge experiment ~/my-prog git add ~/my-prog

HEADmaster

a23

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

parent

Page 68: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

parent

68

~/my-prog git merge experiment ~/my-prog git add ~/my-prog git commit ~/my-prog

153

HEADmaster

parenta23

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

parent

Page 69: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Merge  Konflikte

69

} Merge  Konflikte  treten  auf,  wenn  die  gleiche  Datei  in  den  beiden  Branches  auf  konflingierende  Weise  geändert  wurden.  

} Führt  zu  Pausieren  des  Mergevorgangs  } Beide  Änderungen  sind  in  der  Konfliktdatei  enthalten  } Die  Konfliktdatei  muss  manuell  editiert  werden  } Danach  kann  der  Merge  fortgesetzt  werden

<<<<<<<  HEAD:index.html  <div  id="footer">contact  :  [email protected]</div>  =======  <div  id="footer">    please  contact  us  at  [email protected]  </div>  >>>>>>>  iss53:index.html

Page 70: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Demo  2

(branch,  checkout  commit,  merge,  cherrypick,  blame)

Page 71: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Die  wichtigsten  Befehle  (3  /  4)

71

} git  checkout  commitCommit  →  Index  /  Arbeitskopie

} git  rmDatei  aus  Index  und  Arbeitskopie  löschen

} git  blameLetzte  Änderung  an  Datei  Zeile  für  Zeile  anzeigen

} git  mergeMehrere  Branches  zusammenführen

} git  cherrypickEinzelnen  Commit  an  aktuellen  Branch  dranhängen

Page 72: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Arbeiten  im  Team

Page 73: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Verteilte  Versionskontrolle  mit  Server

73

} Ein  zentrales  Repository  ermöglicht  vereinfachten  Austausch

Computer A

Repository

Working Copy

File 1

Version 3...

...

Computer B

Repository

Working Copy

File 1

Version 3...

...

Server

Repository

Version 3...

Page 74: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

74

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 75: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

75

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 76: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

76

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 77: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

77

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 78: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

78

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 79: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

79

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 80: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Begriffe

80

} Remote  Repository  } Ein  externes  Repository  im  

Netzwek  /  Internet

} Fetch  } Die  lokale  Kopie  des  Remote  

Repositories  im  eigenen  Repo  aktualisieren  

} Push  } Die  lokale  Kopie  des  Remote  

Repositories  zum  externen  Repo  hochladen

} Remote  Branch  } Referenz  auf  einen  Branch  in  

einem  Remote  Repository

} Remote  Tracking  Branch  } Remote  Branch,  welcher  

automatisch  aktualisiert  wird

} Tracking  Branch  } Lokale  Kopie  eines  Remote  

Tracking  Branches  mit  einer  Referenz  auf  den  "Upstream  Branch"

Page 81: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

81

~/project git clone [email protected]:project

Page 82: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

82

~/project git clone [email protected]:project ~/project

HEAD

master

origin/master

6f5parent

543

Page 83: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

83

~/project git add ~/project git commit ~/project

HEAD

master

origin/master

6f5parent

543

Page 84: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

84

~/project git add ~/project git commit ~/project

HEAD

master

origin/master

6f5parent

543 c85parent

Page 85: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

85

~/project git add ~/project git commit ~/project

HEAD

master

origin/master

6f5parent

543 c85parent

3beparent

Page 86: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

86

HEAD

master

origin/master

6f5parent

543 c85parent

3beparent

Jemand  anderes  arbeitet  parallel  und  aktualisiert  das  Remote  Repository  vor  uns

Page 87: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

87

HEAD

master

origin/master

6f5parent

543 c85parent

3beparent

Jemand  anderes  arbeitet  parallel  und  aktualisiert  das  Remote  Repository  vor  uns

b43parent

Page 88: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

88

HEAD

master

origin/master

6f5parent

543 c85parent

3beparent

Jemand  anderes  arbeitet  parallel  und  aktualisiert  das  Remote  Repository  vor  uns

b43parent parent

aa4

Page 89: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

89

HEAD

master

origin/master

6f5parent

543 c85parent

3beparent

b43parent parent

aa4

~/project git fetch ~/project

parentaa4b43

parent

Page 90: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master6f5parent

543

My Computer

90

HEAD

master

origin/master

6f5parent

543 c85parent

3beparent

b43parent parent

aa4

~/project git merge origin/master ~/project

parentaa4b43

parent

a23

parent

parent

Page 91: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

git.company.com

master

a233be

parent

c85

6f5parent

543 aa4b43

parent parent

parent

parent

parent

My Computer

91

HEAD

master

a233be

parent

c856f5parent

543

origin/masteraa4b43parent

parent

parent

parent parent

~/project git push origin master:master ~/project

Page 92: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Rebase  Workflow

Page 93: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering93

~/my-prog git checkout master

~/my-prog git add

~/my-prog git commit

~/my-prog git add ~/my-prog git commit ~/my-prog git checkout experiment

master

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

HEAD

Page 94: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering94

~/my-prog git checkout experiment ~/my-prog git rebase master

master

3be

parent

c85

parent

6f5parent

543

experiment

aa4b43

parentparent

HEAD

Page 95: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering95

~/my-prog git checkout experiment ~/my-prog git rebase master ~/my-prog

master

3be

parent

c85

6f5parent

543

834f21

parentparent

experimentHEAD

parent

Page 96: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering96

~/my-prog git checkout experiment ~/my-prog git rebase master ~/my-prog git checkout master ~/my-prog

master

3be

parent

c85

6f5parent

543

834f21

parentparent

HEAD

experiment

parent

Page 97: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering97

~/my-prog git checkout experiment ~/my-prog git rebase master ~/my-prog git checkout master ~/my-prog git merge experiment

master

3be

parent

c85

6f5parent

543

834f21

parentparent

parent

HEAD

experiment

Page 98: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering98

~/my-prog git checkout experiment ~/my-prog git rebase master ~/my-prog git checkout master ~/my-prog git merge experiment ~/my-prog

master

3bec85

6f5parent

543

parentparent

HEAD

parent834f21

parent

experiment

Page 99: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering99

~/my-prog git checkout experiment ~/my-prog git rebase master ~/my-prog git checkout master ~/my-prog git merge experiment ~/my-prog git branch -d experiment ~/my-prog

master

3bec85

6f5parent

543

parentparent

HEAD

parent834f21

parent

Page 100: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Demo  3

(clone,  fetch,  push,  pull,  rebase)

Page 101: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Die  wichtigsten  Befehle  (4  /  4)

101

} git  clone  urlRemote  Repo  →  Lokales  Repo

} git  fetch  remoteRemote  Tracking  Branches  des  lokalen  Repos  aktualisieren

} git  push  remote  branchLokales  Repo  →  Remote  Repo

} git  pullBei  Tracking  Branches:  Abkürzung  für  git  fetch;  git  merge

} git  rebase  branchDie  Commits  vom  aktuellen  Branch  in  Diffs  umwandeln  und  den  angegebenen  Branch  als  Basis  verwenden

Page 102: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Probeklausur

Page 103: 8.)Version)Control)with)Git - uni-tuebingen.deps.informatik.uni-tuebingen.de/.../ss17/se/08-vcs-git.pdf · 2017-06-15 · Software)Engineering Begriffe 8! Repository)! Änderungsgeschichteund)

Software  Engineering

Tutorinnen  &  Tutoren  gesucht  für  Info  1