26
Git Grundlagen Teil 1 git {initcloneconfigaddcommitstatuslogrmmvpush} ©2014 Benjamin Schürmann, [email protected]

Git Grundlagen

Embed Size (px)

Citation preview

Page 1: Git Grundlagen

Git Grundlagen Teil 1git {init, clone, config, add, 

commit, status, log, rm, mv, push}

©2014 Benjamin Schürmann, [email protected]

Page 2: Git Grundlagen

git init (server seitig)

zentrales Git Repository anlegen

­­bare Deklaration eines zentralen Speicherortes

→ enden üblicherweise mit .git

→ Git Repo ohne Arbeitsverzeichnis

Willkommen zum Git tutorial

bob@host:~$ ssh bob@server

bob@server:~$ cd meinprojekt

bob@server:~$ git init ­­bare project.git    

©2014 Benjamin Schürmann, [email protected]

Page 3: Git Grundlagen

git clonevorhandenes Git Repository kopieren

→ die erzeugte Arbeitskopie stellt ein vollwertiges Git Repo dar

→ erzeugtes .git Unterverzeichnis enthält Metadaten des Git Repo

Willkommen zum Git tutorial

bob@host:~$ git clone ssh://bob@server/project.git

bob@host:~$ cd projekt

bob@host:~/project$ # ..SW­Entwicklung beginnen..    

©2014 Benjamin Schürmann, [email protected]

Page 4: Git Grundlagen

git configgit-Installationen konfigurieren

user.name Deklaration eines Nutzernamens

user.email Deklaration der

Nutzer-Emailadresse

­­edit Bearbeitung aller

Einstellungen

(Farb-Unterstützung, ...)

Willkommen zum Git tutorial

bob@host:~$ git config ­­global user.name "Bob M."

bob@host:~$ git config ­­global user.email "[email protected]"

bob@host:~$ git config ­­global ­­edit

©2014 Benjamin Schürmann, [email protected]

Page 5: Git Grundlagen

3 Git Ebenen

working directory

Arbeitsverzeichnis

staging area

Sammelpunkt für Änderungen

git reposity

Remote Git Projekt

©2014 Benjamin Schürmann, [email protected]

Page 6: Git Grundlagen

git addverschieben von Änderungen im

Arbeitsverzeichnis in die Staging Area

→ kennzeichnet Änderungen für

das nächste commit

Willkommen zum Git tutorial

bob@host:~/project$ git add hello.java

bob@host:~/project$ git commit ­m "datei erstellt"

bob@host:~/project$ git add src

bob@host:~/project$ git commit ­m "ordner erstellt"  

©2014 Benjamin Schürmann, [email protected]

Page 7: Git Grundlagen

git commithinzufügen der aktuellen Staging Area

als Snapshot zum Projektverlauf

­m Kurzbeschreibung der

Änderungen im Snapshot

­a Berücksichtigung der

Änderungen an allen

Dateien

Willkommen zum Git tutorial

bob@host:~/project$ git commit ­m "Fehlerbehebung #42"

bob@host:~/project$ git commit ­am "neue Datenstruktur"  

©2014 Benjamin Schürmann, [email protected]

Page 8: Git Grundlagen

git statusprüfen des Status vom Arbeitsverzeichnis & Staging Area

Willkommen zum Git tutorial

bob@host:~/project$ # ..Edit hello.java..

bob@host:~/project$ git status

  hello.java: "Changes not staged for commit"

bob@host:~/project$ git add hello.java

bob@host:~/project$ git status

  hello.java: "Changes to be commited"

bob@host:~/project$ git commit

bob@host:~/project$ git status

  nothing to commit (working directory clean)

  

©2014 Benjamin Schürmann, [email protected]

Page 9: Git Grundlagen

git loganzeigen der Snapshots, die commited wurden

­­author="<pattern>"

Änderungen einzelner Nutzer

­­stat, -p

Detailliertere Ansichten

­­oneline

Jeder commit als Einzeiler (Übersicht)

Willkommen zum Git tutorial

bob@host:~/project$ git log

  commit 3157ee3718e180a9476bf2e5cab8e3f1e

  Author: Bob M. <[email protected]>

  Date: Tue Jan 8 12:57:51 2013 +0100

  hinzufügen der Funktion sha1() 

  

©2014 Benjamin Schürmann, [email protected]

Page 10: Git Grundlagen

git {rm, mv}löschen, kopieren, verschieben von Dateien

git rm

löschen von Dateien

git mv

verschieben von Dateien

Willkommen zum Git tutorial

bob@host:~/project$ git rm hello.java

bob@host:~/project$ git mv hello.java src/

  

©2014 Benjamin Schürmann, [email protected]

Page 11: Git Grundlagen

git pushhochladen der Änderungen zum zentralen Repository

Willkommen zum Git tutorial

bob@host:~/project$ git push

  

©2014 Benjamin Schürmann, [email protected]

Page 12: Git Grundlagen

Git Arbeitsablauf 1. Änderungen durchführen2. Änderungen stagen → git add <file1> <file2> 3. Änderungen prüfen → git status4. Änderungen hinzufügen → git commit ­m "Kurzer Text"5. Änderungen hochladen → git push

©2014 Benjamin Schürmann, [email protected]

Page 13: Git Grundlagen

Git Grundlagen Teil 2git {rm, mv, checkout, revert, 

clean, pull, branch, merge}

©2014 Benjamin Schürmann, [email protected]

Page 14: Git Grundlagen

git rmlöschen von Dateien

● Löschen kann jederzeit rückgängig gemacht werden

git rm

löschen von Dateien

git rm ­r

löschen von Ordner

Willkommen zum Git tutorial

bob@host:~/project$ git rm hello.java

bob@host:~/project$ git rm ­r src/

  

©2014 Benjamin Schürmann, [email protected]

Page 15: Git Grundlagen

git mvverschieben von Dateien

git mv

verschieben von Dateien

Willkommen zum Git tutorial

bob@host:~/project$ git mv ordner1/ ordner2/

bob@host:~/project$ git status

    renamed: ordner1/1.c ­> ordner2/ordner1/1.c

bob@host:~/project$ git mv hello.java src/

bob@host:~/project$ git status

    renamed: hello.java ­> src/hello.java

  

©2014 Benjamin Schürmann, [email protected]

Page 16: Git Grundlagen

git checkoutÄnderungen zurückspielen

git checkout <commit> <file>

früheren commit einer Dateiwiederherstellen und alleanderen Dateien anpassen

git checkout <commit>

alle Dateien auf den Standeines bestimmten commitsmit mehreren Dateien bringen

Willkommen zum Git tutorial

bob@host:~/project$ git log –oneline

   9183f9f Bug #14 in Run.java gefixt.

bob@host:~/project$ git checkout 9183f9f Run.java

  

©2014 Benjamin Schürmann, [email protected]

Page 17: Git Grundlagen

git revertRücksetzen eines kompletten commitSnapshots, ohne dass der commit aus der history gelöscht wird!

● Git versucht Änderungen durch den gewählten commit zurückzuspielen

● Nach Ausführung der Rücksetzungwird ein neuer commit mit den neuen Änderungen vorgeschlagen

Willkommen zum Git tutorial

bob@host:~/project$ git log –oneline

   9183f9f Bug #14 in Run.java gefixt.

bob@host:~/project$ git revert 9183f9f

  

©2014 Benjamin Schürmann, [email protected]

Page 18: Git Grundlagen

git cleanUngetrackte Dateien automatisch aufräumen lassen

● Achtung: Im Gegensatz zum manuellen git rm können Änderungen durch git clean nicht mehr rückgängig gemacht werden.

git clean ­n

„dry-run“: Nur Auflisten aller Dateien die gelöscht werden

git clean ­df <path>

Untracked Dateien -f und Ordner -d löschen

git clean ­xdf <path>

Untracked Dateien -f und Ordner -d, sowieDateien nach .gitignore -x löschen

Willkommen zum Git tutorial

bob@host:~/project$ git status

   Untracked files:

   (use "git add <file>..." …)

        Run.java

bob@host:~/project$ git clean ­n

   Would remove Run.java

bob@host:~/project$ git clean ­xdf

   Removing Run.java

  

©2014 Benjamin Schürmann, [email protected]

Page 19: Git Grundlagen

git pullLokales Repository mit neuesten Änderungen aktualisieren

1. Änderungen werden herungeladen git fetch

2. Änderungen werden zusammengeführt git merge

Willkommen zum Git tutorial

bob@host:~/project$ git checkout master

bob@host:~/project$ git pull

  

©2014 Benjamin Schürmann, [email protected]

Page 20: Git Grundlagen

git branchArbeitszweige auflisten, erstellen, löschen

git branch <name>

neuen Arbeitszweig <name>erstellen

git branch

alle Arbeitszweige auflisten

git branch ­D <name>

Arbeitszweig <name> löschen

git branch ­m <name>

Arbeitszweig <name> umbenennen

Willkommen zum Git tutorial

bob@host:~/project$ git branch

   * mastertest

bob@host:~/project$ git checkout test

bob@host:~/project$ git branch ­m test2

bob@host:~/project$ git branch

     Master   * test2

  

©2014 Benjamin Schürmann, [email protected]

Page 21: Git Grundlagen

git mergeMehrere Arbeitszweige zusammenführen

git merge <branch>

Merge <branch> in den aktuell gewählten Arbeitszweig

git merge ­­no­ff <branch>

Merge <branch> in den aktuell gewählten Arbeitszweig, aber lege einen merge commit an

Willkommen zum Git tutorial

bob@host:~/project$ git checkout master

bob@host:~/project$ git branch

   * Master     test

bob@host:~/project$ git merge test

  

©2014 Benjamin Schürmann, [email protected]

Page 22: Git Grundlagen

Git Grundlagen Teil 3git {fsck, grep, help}

©2014 Benjamin Schürmann, [email protected]

Page 23: Git Grundlagen

git fsckÜberprüfung der Verbindung und Validierung der Objektdaten

Willkommen zum Git tutorial

bob@host:~/project$ git fsck

    Checking object directories: 100% (256/256),done.

  

©2014 Benjamin Schürmann, [email protected]

Page 24: Git Grundlagen

git grepInhalte in commiteten Dateien finden

git grep ­­text <text>

Sucht in allen commiteten Dateien nach dem String <text>

git grep ­n ­­text <text>

Liefert neben dem Dateinamen auch die Zeile

Willkommen zum Git tutorial

bob@host:~/project$ git grep ­­text "main"

   o.java: public static void main(String[] args){

bob@host:~/project$ git grep ­n ­­text "MAX_C"

   o.java:10: private static final int MAX_C = 0;

  

©2014 Benjamin Schürmann, [email protected]

Page 25: Git Grundlagen

git helpAuslistung aller git Befehlen

git help ­a

Liefert eine Übersicht zu allen verfügbaren git Befehlen

git help <command>

Liefert weitere Informationen zu dem git Befehl <command>

Willkommen zum Git tutorial

bob@host:~/project$ git help ­a

bob@host:~/project$ git help merge

  

Page 26: Git Grundlagen

Git Grundlagen Links

● Git Tutorials von atlassian.com● Git Guide von <rogerdudler>● Interaktives Git Tutorial von github.com● Tutorial zu Git Branching von <pcottle>

©2014 Benjamin Schürmann, [email protected]