Git Grundlagen Teil 1 
git {init, clone, config, add, 
commit, status, log, rm, mv, push} 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
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, edu-git@schuermann.cc
git clone 
vorhandenes 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, edu-git@schuermann.cc
git config 
git-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 "b@m.de" 
bob@host:~$ git config ­­global 
­­edit 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
3 Git Ebenen 
working directory 
Arbeitsverzeichnis 
staging area 
Sammelpunkt für Änderungen 
git reposity 
Remote Git Projekt 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
git add 
verschieben 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, edu-git@schuermann.cc
git commit 
hinzufü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, edu-git@schuermann.cc
git status 
prü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, edu-git@schuermann.cc
git log 
anzeigen 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. <b@m.de> 
Date: Tue Jan 8 12:57:51 2013 +0100 
hinzufügen der Funktion sha1() 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
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, edu-git@schuermann.cc
git push 
hochladen der Änderungen zum 
zentralen Repository 
Willkommen zum Git tutorial 
bob@host:~/project$ git push 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
Git Arbeitsablauf 
1. Änderungen durchführen 
2. Änderungen stagen → git add <file1> <file2> 
3. Änderungen prüfen → git status 
4. Änderungen hinzufügen → git commit ­m 
"Kurzer Text" 
5. Änderungen hochladen → git push 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
Git Grundlagen Teil 2 
git {rm, mv, checkout, revert, 
clean, pull, branch, merge} 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
git rm 
lö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, edu-git@schuermann.cc
git mv 
verschieben 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, edu-git@schuermann.cc
git checkout 
Änderungen zurückspielen 
git checkout <commit> <file> 
früheren commit einer Datei 
wiederherstellen und alle 
anderen Dateien anpassen 
git checkout <commit> 
alle Dateien auf den Stand 
eines bestimmten commits 
mit 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, edu-git@schuermann.cc
git revert 
Rücksetzen eines kompletten commit 
Snapshots, 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ücksetzung 
wird 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, edu-git@schuermann.cc
git clean 
Ungetrackte 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, sowie 
Dateien 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, edu-git@schuermann.cc
git pull 
Lokales 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, edu-git@schuermann.cc
git branch 
Arbeitszweige 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 
* master 
test 
bob@host:~/project$ git checkout test 
bob@host:~/project$ git branch ­m 
test2 
bob@host:~/project$ git branch 
Master 
* test2 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
git merge 
Mehrere 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, edu-git@schuermann.cc
Git Grundlagen Teil 3 
git {fsck, grep, help} 
©2014 Benjamin Schürmann, edu-git@schuermann.cc
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, edu-git@schuermann.cc
git grep 
Inhalte 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, edu-git@schuermann.cc
git help 
Auslistung 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
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, edu-git@schuermann.cc

Git Grundlagen

  • 1.
    Git Grundlagen Teil1 git {init, clone, config, add, commit, status, log, rm, mv, push} ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 2.
    git init (serverseitig) 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, edu-git@schuermann.cc
  • 3.
    git clone vorhandenesGit 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, edu-git@schuermann.cc
  • 4.
    git config git-Installationenkonfigurieren 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 "b@m.de" bob@host:~$ git config ­­global ­­edit ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 5.
    3 Git Ebenen working directory Arbeitsverzeichnis staging area Sammelpunkt für Änderungen git reposity Remote Git Projekt ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 6.
    git add verschiebenvon Ä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, edu-git@schuermann.cc
  • 7.
    git commit hinzufügender 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, edu-git@schuermann.cc
  • 8.
    git status prüfendes 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, edu-git@schuermann.cc
  • 9.
    git log anzeigender 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. <b@m.de> Date: Tue Jan 8 12:57:51 2013 +0100 hinzufügen der Funktion sha1() ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 10.
    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, edu-git@schuermann.cc
  • 11.
    git push hochladender Änderungen zum zentralen Repository Willkommen zum Git tutorial bob@host:~/project$ git push ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 12.
    Git Arbeitsablauf 1.Änderungen durchführen 2. Änderungen stagen → git add <file1> <file2> 3. Änderungen prüfen → git status 4. Änderungen hinzufügen → git commit ­m "Kurzer Text" 5. Änderungen hochladen → git push ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 13.
    Git Grundlagen Teil2 git {rm, mv, checkout, revert, clean, pull, branch, merge} ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 14.
    git rm löschenvon 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, edu-git@schuermann.cc
  • 15.
    git mv verschiebenvon 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, edu-git@schuermann.cc
  • 16.
    git checkout Änderungenzurückspielen git checkout <commit> <file> früheren commit einer Datei wiederherstellen und alle anderen Dateien anpassen git checkout <commit> alle Dateien auf den Stand eines bestimmten commits mit 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, edu-git@schuermann.cc
  • 17.
    git revert Rücksetzeneines kompletten commit Snapshots, 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ücksetzung wird 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, edu-git@schuermann.cc
  • 18.
    git clean UngetrackteDateien 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, sowie Dateien 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, edu-git@schuermann.cc
  • 19.
    git pull LokalesRepository 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, edu-git@schuermann.cc
  • 20.
    git branch Arbeitszweigeauflisten, 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 * master test bob@host:~/project$ git checkout test bob@host:~/project$ git branch ­m test2 bob@host:~/project$ git branch Master * test2 ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 21.
    git merge MehrereArbeitszweige 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, edu-git@schuermann.cc
  • 22.
    Git Grundlagen Teil3 git {fsck, grep, help} ©2014 Benjamin Schürmann, edu-git@schuermann.cc
  • 23.
    git fsck Überprüfungder 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, edu-git@schuermann.cc
  • 24.
    git grep Inhaltein 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, edu-git@schuermann.cc
  • 25.
    git help Auslistungaller 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
  • 26.
    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, edu-git@schuermann.cc