Skip to content

Latest commit

 

History

History
263 lines (158 loc) · 4.13 KB

live-demo.wiki

File metadata and controls

263 lines (158 loc) · 4.13 KB

Hier werden sowohl die Kommandos beschrieben die wir vorführen wollen, und auch zusätzliche Beispiele die wir verwenden können.

Wichtig: bei Inhalten immer eine Leerzeile dazwischen, das ist wichtig damit bei der merge demo kein Konflikt entsteht.

Table of Contents

Namen und Email einstellen:

Einsehen:

    git config --get user.name
    git config --get user.email

Setzen:

    git config --global user.name "Max Mustermann"
    git config --global user.email [email protected]

Zurück:

    git config --global user.name "Valentin Haenel"
    git config --global user.email [email protected]

Farbe:

    git config --global color.ui auto

Projekt Erstellen

    mkdir demo
    cd demo
    git init

TODO: hier nochmal config üben?

Extra - Mit einem leeren commit beginnen:

    git init
    git commit --allow-empty -m "Zero"
    git tag 0

Arbeitsablauf

    (neue Zeile hinzufügen)
    git status
    git add datei
    git status
    git commit -m "erster commit"
    git show

Extra - interaktiv hunks hinzufügen

    (eine Zeile davor, eine dannach)
    git add -p

Informationen

Einfach:

    git log

Grafisch:

    gitk --all

Konsole:

    tig

Welche Auswirkungen hat ein Commit:

    (Eine weitere Zeile)
    git diff
    git commit -a -m "eine Zeile hinzugefügt"

    git log
    gitk --all
    tig

Extra - Log Formate:

Als Einzeiler:

    git log --pretty=oneline

die letzten N anzeigen

    git log -N

bis zu COMMIT anzeigen

    git log COMMIT

Alle seit ...

    git log --since="23 hours"

Alle vor ...

    git log --before="42 days"

Alle zwischen A und B

    git log A..B

Undo Funktionen

    (Zeile hinzufügen)
    git add
    git status
    git reset HEAD
    git status
    git commit -m "commit der Rückgängig gemacht wird"
    git revert HEAD
    git log
    git reset --hard HEAD~2
    git log

Branches

Branch 'feature' erstellen:

    git branch apfel
    git branch
    git checkout apfel

Commits machen:

    (eine Zeile zwischen den beiden ersten)
    git commit -a -m "commit im branch 'apfel'"
    git checkout master
    (eine Zeile am Ende)
    git commit -a -m "commit im branch 'master'"

    gitk --all

Branch Löschen:

    git branch kiwi
    git branch -d kiwi

Merging

Weiteren Branch erstellen:

    git checkout master
    git checkout -b birne
    (Eine Zeile hinzufügen)

Branch 'apfel' in 'birne' mergen:

    git config --global merge.summary true

    git merge apfel

    gitk

Fast-forward (Branch 'feature' auf den Stand von 'master' bringen):

    git checkout apfel
    git merge birne

    gitk

    git checkout master 
    git merge apfel

Extra - Cherry Pick:

TODO

Konflikte

Commits machen:

    git checkout apfel
    (Das Ende einer Zeile verändern)
    git commit -a -m "erster commit für konflikt"
    git checkout birne
    (Zeile anders verändern)
    git commit -a -m "zweiter commit für konflikt"

    git merge

Konflikt Marker zeigen und löschen.

    vim file
    git add file
    git commit

So, jetzt gehts weiter...

Remote

Wir tun mal so als wären wir Teilnehmer:

    git clone -o blessed git://git.plenz.com/git-tips
    git remote add meins ssh://[email protected]:2222/repos/tn01
    (Veränderung machen)
    git push meins master

Integration der Veränderungen:

    pull von teilnehmer repo
    merge
    push nach blessed

    gitk

Kür

Remote branch löschen:

Erstellen:

    git branch loesch-mich

Pushen:

    git push demo-remote loesch-mich
    git branch -a

Löschen:

    git branch -d loesch-mich
    git branch -a
    git push demo-remote :loesch-mich

(Ich glaube das funktioniert weil quasi kein ref gepushed wird.)

Branch erstellen der einen anderen root commit hat:

    git clean -fx
    git symbolic-ref HEAD refs/heads/branch-name
    git rm -r '*'
    git commit --allow-empty -m "zero"

Rebasing

Commits machen:

    (Neue Zeile am Ende)
    git commit -a -m "zweiter commit im branch 'feature'"

    git checkout master
    (Neue Zeile in der Mitte)
    git commit -a -m "zweiter commit im branch 'master'"

    gitk

Rebase!:

    git rebase master feature

    gitk