dieser Spickzettel ist "etwas dünn", deswegen empfehle ich auch mal diesen hier weiter: git cheat sheet (von github)
Neues eigenes Projekt lokal anlegen:
git init
bestehendes Projekt von einem Server klonen
git clone git@git.domain:projekt.git
Dann User + Mailadresse einstellen:
git config user.name "Anna Beispiel"
git config user.email "anna.beispiel@example.com"
-
-global
kann man diese Werte auch für alle Projekte einstellenWelchen Branch hab ich von dem Project?
git branch * master
Welche Branches gibts auf dem Server?
$ git branch -r origin/HEAD -> origin/master origin/devel origin/master
Den develop-Branch hier lokal registrieren und von remote auschecken
$ git checkout -b devel origin/devel Branch devel set up to track remote branch devel from origin. Switched to a new branch 'devel'
Das alles wird in der .git/config-Datei gespeichert:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@git.domain:projekt.git [branch "master"] remote = origin merge = refs/heads/master [branch "devel"] remote = origin merge = refs/heads/devel [user] name = Anna Beispiel email = anna.beispiel@example.com
Zwei Repositories:
gedachte Arbeitsweise: Entwickelt wird in dev, zusammengefügt in integrate, veröffentlicht in master.
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "release"] url = git@github.com:myuser/myproject.git fetch = +refs/heads/*:refs/remotes/release/* [remote "devel"] url = git@github.com:myuser/myproject-devel.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "integrate"] remote = devel merge = refs/heads/integrate [branch "dev"] remote = devel merge = refs/heads/dev [branch "master"] remote = release merge = refs/heads/master [gitg] mainline = refs/heads/integrate
git pull
oder git fetch;git merge
git status
git diff
- Zeig Änderungen, die noch nicht für Checkin markiert sindgit diff -cached
- Zeig die Änderungen, die für den Checkin markiert sind aber noch nicht eingecheckt sindgit add datei.py
- Datei in genau diesem Status für Checkin markierengit -m"fix XY with Q" datei.py
- schneller Checkin genau dieser Datei mit Kommentar, auch wenn Datei noch nicht mit add markiert istgit commit -v
zeigt im Kommentar-Editor den Diffgit commit --amend
- Ändere den letzten Checkin (Kommentar oder um eine eben noch hinzugefügte markierte Änderung)git checkout -- datei
- mache Änderungen an Datei rückgängiggit checkout -b newfeature
- neuen Branch erzeugen und verwendengit checkout devel
- schon bestehenden Branch aufrufengit remote -v
- zeig die remote Repositories an + URLgit pull
- bevor wir pushen, noch feststellen obs Änderungen auf dem remote Repository gab …git push
git push <repo> <branch>
(z.B. git push origin newfeature
) - neuen Branch auf das remote Repository schiebengit log -p -2
- zeige Änderungen der letzten 2 Commits (mit Diff) git tag -a v0.1.3 9fceb02
- nachträglich taggengit push origin v0.1.3
- Tag auf Server schiebengit push origin --tags
- alle Tags auf Server schiebengit rebase --interactive 9fcb02
- alle commits nach 9fcb02 zusammenfassen (es erscheint ein editor-Fenster, alle bis auf den obersten mit "squash" statt pick markieren …)es gibt sehr sehr viele Anleitungen zu git im Internet, ein paar wenige:
Specials & Tricks:
und viele viele viele mehr ….
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel