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 [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
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://[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
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