====== git Versionsverwaltung ====== kurz und knapp: http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/de/ch02.html Grafisches Interface (zum schnellen browsen in alten commits...): * ''gitk'' bzw ''git gui'' (von git selbst mitgeliefert, auf tcl/tk) * ''qgit''(Qt Interface) * ''tig'' (ncurses?) ===== Zusammenfassung ===== ^Befehl ^macht ^ |git init (--bare fuer kein working directory)| | |git add [Dateien] | Dateien hinzufuegen| |git commit -am "Kommentar" | aktuelle Version der Datei ins git | |git push --all [gitrepo] | git Infos nach [gitrepo] kopieren | |git log --pretty=format: --name-only --diff-filter=A | sort - | Liste aller Dateien in der Versionsverwaltung anzeigen| ===== Grobe Vorgehensweise ===== git init git add datei git commit vim datei git status git status -s git commit -a git commit -am "commit message" git log von woanders holen und interagieren: git clone ssh://server/home/user/gitrepository [...] git push [...woanders aenderungen...] git pull pushen möglichst nur auf einen dedizierten server auf dem nicht am repository gearbeitet wird und deshalb nur ein bare repository mit ''git init --bare'' eingerichtet wurde! (beim ersten pushen auf den server: ''git push origin master:master'' um den branch festzulegen) Prinzipiell immer commit, pull, evtl. merge, push ===== GIT SSH mit einer unix gruppe teilen ===== http://realguess.net/node/10 (im repository verzeichnis) git init --bare --shared=group chown -R user:group . ===== GIT BARE REPO umziehen ===== git clone --bare --shared ssh://physiker/home/tomitude/api api chown -R tomitude:tomitude . ===== GIT Branching ===== neuen branch erstellen mit git branch NAME branch wechseln mit git checkout NAME Aenderungen, in branch committen etc. Branch in master branch mergen: git checkout master git merge NAME Damit ist master aktuell. Der Branch NAME enthaelt evtl. zwischenzeitlich vorgenommene Aenderungen im Branch master aber natuerlich nicht. Caro Vorgehensweise mit development-branch: branch entweder loeschen und neu erstellen, oder master in development mergen. http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is ===== GIT Tags ===== Mit tags kann man einzelne commits herausheben, z.B. um eine spezielle Version zu markieren. Neuen tag erstellen mit git tag -a SHORTNAME_ZB_v01 -m 'Beschreibung' tags+Beschreibungen auflisten mit git tag -n zu tag SHORTNAME gehen git checkout tags/SHORTNAME Tags werden mit git push nicht mitgenommen. Ein tag auf den remote server/origin zu schieben: git push origin SHORTNAME Beim pullen sollte der tag mitkommen.