Git
Git ist ein verteiltes Software Revision Control System (Versionsverwaltung).
Allgemeines
- http://git-scm.com
- https://git.wiki.kernel.org
- Tutorial siehe LU 06/10 S.62
- SaaS-Hoster für Git-Projekte: gitorious.org
- Git-Repositories mit Metaverzeichnis managen mit Perl-Script: siehe LM 08/10 S.116, Listings
- Git und Subversion gemeinsam nutzen (pro-linux.de)
- Introduction to GIT on Linux – Install, Create Project, Commit Files (thegeekstuff.com)
- Git - Revision Control Perfected (linuxjournal.com)
Git und Eclipse
- http://www.eclipse.org/egit/
- http://wiki.eclipse.org/EGit/User_Guide
- http://wiki.eclipse.org/EGit/User_Guide/Remote
Server
- Gerrit - Git Code Review und Repository Server: steuert Access Control, Projekte
- Jenkins - continuous integration server
Auch als Dienstleister:
- Github - Free public repositories, collaborator management, issue tracking, wikis, downloads, code review, graphs and much more
- Gitorious - Host your open source projects and their repositories for free on Gitorious to enable community contributions.
- Plattform ist OSS
- Bitbucket - Store all of your Git and Mercurial source code in one place with unlimited private repositories. Includes issue tracking, wiki, and pull requests. Secure hosting with flexible permissions for your repositories. Integrates with JIRA, Jenkins, Pivotal, Cloud9 IDE and other developer tools.
Begriffe
- Index = Staging Area
Kommandos
Lokales Repository
- Project initialisieren (Vereichnis darf schon Files enthalten)
cd /etc git init apache2
Hinweise:
- erzeugt /etc/apache2/.git
- apache2 ist das Repository
- Alle Files zum Index hinzufügen
cd apache2 git add *
- Veränderung an einer einzelnen Datei zum Index hinzufügen
git add
- Veränderungen aller Dateien in Index übertragen, jedoch noch kein Commit
git add -u
- Commit (direkt mit Kommentar, Kommentar wird abgefragt, verbose)
git commit -m "First commit" git commit git commit -v
- Hinweis: git commit zeigt Änderungen an, die noch nicht im Index sind (staged), und listet noch nicht hinzugefügte Dateien
- Commit mit Umgehung des Index (sofort vom Working Tree ins Repository)
git commit -a -m "Comment"
- Einen Branch auschecken (auf den dann die Änderungen im Working Tree wirken)
git checkout master git checkout next
- Einen Branch next mit Änderungen nach master mergen
git checkout next -> Datei editieren git add <datei> git commit git checkout master git merge next git push (Änderungen Richtung Remote)
- Projektgeschichte ansehen (letzte 4 Commits, zeitliche Einschränkung)
git log -4 --color-words git log --after='2011-31-12' git log --before='2011-31-12' git log --since='yesterday' git log --format=fuller
- Unterscheide anzeigen (zum letzten Commit)
git show --color-words git log -p --color-words
- Unterschiede anzeigen zw. Working Tree und Index (vor Commit)
git diff --color-words
- Unterschiede anzeigen zw. Index und Repository
git diff --staged --color-words
- Muster in allen Dateien durchsuchen
git grep muster
- Muster in bestimmten Dateien durchsuchen (hier .conf)
git grep muster -- '*.conf'
- Konfiguration von $HOME/.gitconfig
git config --global user.name 'Max Mustermann' git config --global user.email Max.Mustermann@example.com git config --global color.ui auto git config --global -l git config --global -e man git-config
- Hinweis: ohne --global wird lokale Repository-Konfig editiert, mit --system die systemweite Konfig
Remote Repository
- Einen (lokalen) Branch auschecken (auf den dann die Änderungen im Working Tree wirken)
git checkout master
oder für Branch next
git checkout next
- Änderungen vom Remote herunterladen
git pull
- Änderungen nach Commit zum Remote hochladen
git push
- Konfig .git/config
[remote "origin"] url = ssh://user@gitserver:29418/repo fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [branch "next"] remote = origin merge = refs/heads/next