Slide 1

Slide 1 text

Git Baswissen Stämpfli AG, 14. Januar 2016 Marcel Hauri @mhauri

Slide 2

Slide 2 text

Was ist Git Git ([ɡɪt], engl. Blödmann) ! https://de.wikipedia.org/wiki/Git

Slide 3

Slide 3 text

Was ist Git Git ist ein verteiltes Versionsverwaltungssystem.

Slide 4

Slide 4 text

Was ist Git Git ist ein verteiltes Versionsverwaltungssystem. ! ! Eine Versionsverwaltung ist ein System, das zur Erfassung von 
 Änderungen an Dokumenten oder Dateien verwendet wird

Slide 5

Slide 5 text

Was ist Git Git ist ein verteiltes Versionsverwaltungssystem. ! ! Die verteilte Versionsverwaltung (DVCS, distributed VCS) verwendet kein zentrales Repository mehr. ! Jeder, der an dem verwalteten Projekt arbeitet, hat sein eigenes Repository und kann dieses mit jedem beliebigen anderen Repository abgleichen.

Slide 6

Slide 6 text

Was ist Git Git ist ein verteiltes Versionsverwaltungssystem. ! ! Obwohl konzeptionell nicht unbedingt notwendig, existiert in verteilten Versionsverwaltungsszenarien üblicherweise ein offizielles Repository ! ! !

Slide 7

Slide 7 text

Los geht’s

Slide 8

Slide 8 text

git init git init Initialized empty Git repository in /.git/ Ein Git Repository anlegen

Slide 9

Slide 9 text

git status git status On branch master ! Initial commit ! nothing to commit (create/copy files and use "git add" to track) Änderungen am Repository nachverfolgen

Slide 10

Slide 10 text

Datei anlegen touch staempfli.txt

Slide 11

Slide 11 text

git status git status On branch master ! Initial commit ! Untracked files: (use "git add ..." to include in what will be committed) ! staempfli.txt ! nothing added to commit but untracked files present (use "git add" to track) Änderungen am Repository nachverfolgen

Slide 12

Slide 12 text

git add git add staempfli.txt Dateien zur Versionskontrolle hinzufügen (stage)

Slide 13

Slide 13 text

git status git status On branch master ! Initial commit ! Changes to be committed: (use "git rm --cached ..." to unstage) ! new file: staempfli.txt ! Änderungen am Repository nachverfolgen

Slide 14

Slide 14 text

git commit git commit -m "Add staempfli file" [master (root-commit) 7e8c0ed] Add staempfli file 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 staempfli.txt Änderungen im Repository speichern

Slide 15

Slide 15 text

git log git log commit 7e8c0edcedf4ecd8e92788c408d1aadb2f5d9a23 Author: Marcel Hauri Date: Wed Jan 13 15:38:55 2016 +0100 ! Add staempfli file Commits anzeigen

Slide 16

Slide 16 text

Datei editieren echo 'Hallo das ist ein Test' > staempfli.txt

Slide 17

Slide 17 text

git diff git diff diff --git a/staempfli.txt b/staempfli.txt index e69de29..ee427ef 100644 --- a/staempfli.txt +++ b/staempfli.txt @@ -0,0 +1 @@ +Hallo das ist ein Test Differenz anzeigen (+ hinzugefügt / - gelöscht)

Slide 18

Slide 18 text

git status git status On branch master Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) ! modified: staempfli.txt ! no changes added to commit (use "git add" and/or "git commit -a") Änderungen am Repository nachverfolgen

Slide 19

Slide 19 text

git add git add staempfli.txt Dateien zur Versionskontrolle hinzufügen (stage)

Slide 20

Slide 20 text

git status git status On branch master Changes to be committed: (use "git reset HEAD ..." to unstage) ! modified: staempfli.txt Änderungen am Repository nachverfolgen

Slide 21

Slide 21 text

git commit git commit -m "Add some nice text" [master 134869a] Add some nice text 1 file changed, 1 insertion(+) Änderungen im Repository speichern

Slide 22

Slide 22 text

git log git log commit b0e5f6e9a69eeb1766fc4545745ec57f038dba85 Author: Marcel Hauri Date: Wed Jan 13 15:58:41 2016 +0100 ! Add some nice text ! commit 7e8c0edcedf4ecd8e92788c408d1aadb2f5d9a23 Author: Marcel Hauri Date: Wed Jan 13 15:38:55 2016 +0100 ! Add staempfli file Commits anzeigen

Slide 23

Slide 23 text

Das war ja einfach

Slide 24

Slide 24 text

git branch git checkout -b develop Switched to a new branch 'develop' Neuer Zweig

Slide 25

Slide 25 text

git branch -a git branch -a * develop master Alle zweige anzeigen

Slide 26

Slide 26 text

Datei anlegen touch staempfli-internet.txt

Slide 27

Slide 27 text

git add git add staempfli-internet.txt Dateien zur Versionskontrolle hinzufügen (stage)

Slide 28

Slide 28 text

git status git status On branch develop Changes to be committed: (use "git reset HEAD ..." to unstage) ! new file: staempfli-internet.txt Änderungen am Repository nachverfolgen

Slide 29

Slide 29 text

git commit git commit -m "Add stamempfli internet" develop 3294860] Add stamempfli internet 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 staempfli-internet.txt Änderungen im Repository speichern

Slide 30

Slide 30 text

git branch git checkout master Switched to branch 'master' Zurück zu master

Slide 31

Slide 31 text

git branch -a git branch -a develop * master Alle zweige anzeigen

Slide 32

Slide 32 text

git merge git merge develop Updating b0e5f6e..3294860 Fast-forward staempfli-internet.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 staempfli-internet.txt Zweige zusammenführen

Slide 33

Slide 33 text

git log --oneline git log —oneline 3294860 Add stamempfli internet b0e5f6e Add some nice text 7e8c0ed Add staempfli file Commits anzeigen

Slide 34

Slide 34 text

git tag -a git tag -a 0.1.0 -m 'Release 0.1.0' Release erstellen

Slide 35

Slide 35 text

git tag -l git tag -l Releases auflisten 0.1.0

Slide 36

Slide 36 text

Hinweis zu Releases immer immer wirklich immer und ohne Ausnahme

Slide 37

Slide 37 text

Hinweis zu Releases nutzen wir die Semantische Versionierung http://semver.org/ MAJOR.MINOR.PATCH

Slide 38

Slide 38 text

also 2.0.0 v2.0.0-rc.2 2.0.0-rc.1 1.0.0 1.0.0-beta v0.1.0 0.1.0-patch1 2.0.0-alpha.1

Slide 39

Slide 39 text

Alles andere ist

Slide 40

Slide 40 text

Weiter gehts

Slide 41

Slide 41 text

git remote add git remote add origin ssh://[email protected]:7999/hackday/git-basics.git Mit externen Repositories arbeiten

Slide 42

Slide 42 text

git fetch git fetch Änderungen aus Remote Repositories zusammenführen warning: no common commits remote: Zähle Objekte: 10, Fertig. remote: Komprimiere Objekte: 100% (7/7), Fertig. remote: Total 10 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (10/10), done. From ssh://your.server.com:7999/hackday/git-basics

Slide 43

Slide 43 text

git pull git pull Repository mit den neuesten Änderungen zu aktualisieren There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details ! git pull ! If you wish to set tracking information for this branch you can do so with: ! git branch --set-upstream-to=origin/ master

Slide 44

Slide 44 text

git pull origin master Repository mit den neuesten Änderungen abgleichen Merge branch 'master' of ssh://your.server.com:7999/hackday/git-basics ! # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.

Slide 45

Slide 45 text

git pull origin master git pull origin master Repository mit den neuesten Änderungen abgleichen From ssh://your.server.com:7999/hackday/git-basics * branch master -> FETCH_HEAD Merge made by the 'recursive' strategy. README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 README.md

Slide 46

Slide 46 text

git log --oneline git log —oneline 0f22ed6 Merge branch 'master' of ssh://your.server.com:7999/hackday/git-basics 3294860 Add stamempfli internet 134869a Add some nice text 7e8c0ed Add staempfli file 15c2a09 update README 5960440 update README 3b05fd9 add README Commits anzeigen

Slide 47

Slide 47 text

git push origin master git push origin master Externes Repository aktualisieren Counting objects: 5, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 279 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: remote: Create pull request for master: remote: https://your.server.com/projects/HACKDAY/repos/git-basics/compare/commits?sourceBranch= master remote: To ssh://[email protected]:7999/hackday/git-basics.git 15c2a09..b41b45a master -> master

Slide 48

Slide 48 text

Ende

Slide 49

Slide 49 text

Da gibts noch mehr … http://rypress.com/tutorials/git/index http://amzn.com/B00QFIA5OC https://git-scm.com/ https://try.github.io

Slide 50

Slide 50 text

Nutzt die Macht