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.
Einsehen:
git config --get user.name
git config --get user.email
Setzen:
git config --global user.name "Max Mustermann"
git config --global user.email max@mustermann.de
Zurück:
git config --global user.name "Valentin Haenel"
git config --global user.email valentin.haenel@gmx.de
Farbe:
git config --global color.ui auto
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
(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
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
(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
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
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
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...
Wir tun mal so als wären wir Teilnehmer:
git clone -o blessed git://git.plenz.com/git-tips
git remote add meins ssh://tn01@git.plenz.com:2222/repos/tn01
(Veränderung machen)
git push meins master
Integration der Veränderungen:
pull von teilnehmer repo
merge
push nach blessed
gitk
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"
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