Git Basiswissen

Git Basiswissen

Präsentation zum Stämpfli AG Hackday vom 14. Januar 2016

961dfec60de2d5e3338cc85f65f43391?s=128

Marcel Hauri

January 14, 2016
Tweet

Transcript

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

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

  3. Was ist Git Git ist ein verteiltes Versionsverwaltungssystem.

  4. Was ist Git Git ist ein verteiltes Versionsverwaltungssystem. ! !

    Eine Versionsverwaltung ist ein System, das zur Erfassung von 
 Änderungen an Dokumenten oder Dateien verwendet wird
  5. 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.
  6. Was ist Git Git ist ein verteiltes Versionsverwaltungssystem. ! !

    Obwohl konzeptionell nicht unbedingt notwendig, existiert in verteilten Versionsverwaltungsszenarien üblicherweise ein offizielles Repository ! ! !
  7. Los geht’s

  8. git init git init Initialized empty Git repository in /.git/

    Ein Git Repository anlegen
  9. 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
  10. Datei anlegen touch staempfli.txt

  11. git status git status On branch master ! Initial commit

    ! Untracked files: (use "git add <file>..." 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
  12. git add git add staempfli.txt Dateien zur Versionskontrolle hinzufügen (stage)

  13. git status git status On branch master ! Initial commit

    ! Changes to be committed: (use "git rm --cached <file>..." to unstage) ! new file: staempfli.txt ! Änderungen am Repository nachverfolgen
  14. 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
  15. git log git log commit 7e8c0edcedf4ecd8e92788c408d1aadb2f5d9a23 Author: Marcel Hauri <marcel@hauri.me>

    Date: Wed Jan 13 15:38:55 2016 +0100 ! Add staempfli file Commits anzeigen
  16. Datei editieren echo 'Hallo das ist ein Test' > staempfli.txt

  17. 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)
  18. git status git status On branch master Changes not staged

    for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." 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
  19. git add git add staempfli.txt Dateien zur Versionskontrolle hinzufügen (stage)

  20. git status git status On branch master Changes to be

    committed: (use "git reset HEAD <file>..." to unstage) ! modified: staempfli.txt Änderungen am Repository nachverfolgen
  21. git commit git commit -m "Add some nice text" [master

    134869a] Add some nice text 1 file changed, 1 insertion(+) Änderungen im Repository speichern
  22. git log git log commit b0e5f6e9a69eeb1766fc4545745ec57f038dba85 Author: Marcel Hauri <marcel@hauri.me>

    Date: Wed Jan 13 15:58:41 2016 +0100 ! Add some nice text ! commit 7e8c0edcedf4ecd8e92788c408d1aadb2f5d9a23 Author: Marcel Hauri <marcel@hauri.me> Date: Wed Jan 13 15:38:55 2016 +0100 ! Add staempfli file Commits anzeigen
  23. Das war ja einfach

  24. git branch git checkout -b develop Switched to a new

    branch 'develop' Neuer Zweig
  25. git branch -a git branch -a * develop master Alle

    zweige anzeigen
  26. Datei anlegen touch staempfli-internet.txt

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

  28. git status git status On branch develop Changes to be

    committed: (use "git reset HEAD <file>..." to unstage) ! new file: staempfli-internet.txt Änderungen am Repository nachverfolgen
  29. 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
  30. git branch git checkout master Switched to branch 'master' Zurück

    zu master
  31. git branch -a git branch -a develop * master Alle

    zweige anzeigen
  32. 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
  33. git log --oneline git log —oneline 3294860 Add stamempfli internet

    b0e5f6e Add some nice text 7e8c0ed Add staempfli file Commits anzeigen
  34. git tag -a git tag -a 0.1.0 -m 'Release 0.1.0'

    Release erstellen
  35. git tag -l git tag -l Releases auflisten 0.1.0

  36. Hinweis zu Releases immer immer wirklich immer und ohne Ausnahme

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

  38. 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

  39. Alles andere ist

  40. Weiter gehts

  41. git remote add git remote add origin ssh://git@your.server.com:7999/hackday/git-basics.git Mit externen

    Repositories arbeiten
  42. 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
  43. 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 <remote> <branch> ! If you wish to set tracking information for this branch you can do so with: ! git branch --set-upstream-to=origin/<branch> master
  44. 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.
  45. 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
  46. 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
  47. 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://git@your.server.com:7999/hackday/git-basics.git 15c2a09..b41b45a master -> master
  48. Ende

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

  50. Nutzt die Macht