Git
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Git 🇬🇧 ist ein dezentrales Versionsverwaltungssystem. Es wurde 2005 von Linus Torvalds als Ersatz für das proprietäre Programm BitKeeper 🇬🇧 geschrieben, da BitKeeper vielen Kernel-Entwicklern durch Lizenzverschärfungen den Zugang zu den Kernelquellen verwehrte. Seit dem Entwicklungsstart hat sich Git äußerst rasant entwickelt.
Git unterscheidet sich von einem traditionellen Programm wie Subversion. Wichtige Eigenschaften sind:
Einfache und effiziente Arbeitsweise nach dem KISS-Prinzip
Kein zentraler Server benötigt (wird aber dennoch häufig eingesetzt)
Unterstützung vieler Übertragungsprotokolle (HTTP, HTTPS, FTP, SSH, rsync)
Absicherung durch GnuPG-Signierung
Umfangreiche Arbeiten ohne Internetzugang möglich
Installation¶
Folgendes Paket muss installiert [1] werden:
git
Befehl zum Installieren der Pakete:
sudo apt-get install git
Oder mit apturl installieren, Link: apt://git
Hinweis:
Bis einschließlich Ubuntu 10.04 muss stattdessen das Paket git-core installiert werden.
Optional können zahlreiche Erweiterungen wie z.B. Graphische Oberflächen für Git installiert werden.
PPA¶
Für die aktuelle Git-Version kann ein "Personal Package Archiv (PPA) [2] genutzt werden.
Adresszeile zum Hinzufügen des PPAs:
ppa:git-core/ppa
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der PPA-Beschreibung des Eigentümers/Teams git-core zu entnehmen.
Nach dem Aktualisieren der Paketquellen kann das folgende Paket installiert werden:
git (ppa)
Befehl zum Installieren der Pakete:
sudo apt-get install git
Selbst kompilieren¶
Wenn man die neueste Version von Git verwenden will, kann man Git auch selbst kompilieren.
Befehl zum Installieren der Build-Abhängigkeiten:
sudo apt-get build-dep git
sudo aptitude build-depends git
Bis Ubuntu 10.04 (einschließlich) muss man wieder stattdessen das Paket git-core angeben und braucht zusätzlich:
libssl-dev
Befehl zum Installieren der Pakete:
sudo apt-get install libssl-dev
Oder mit apturl installieren, Link: apt://libssl-dev
Danach führt man folgende Befehle [3] aus:
git clone git://github.com/gitster/git cd git make make install
Dadurch wird Git in ~/bin/ installiert (make install
sollte nicht mit Root-Rechten ausgeführt werden). Diese Vorgehensweise wird von Linus Torvalds empfohlen 🇬🇧.
Anwendung¶
Quellcode herunterladen¶
Will man nur den Quellcode eines Projekts aus dem Git-Repository herunterladen, verwendet man den Befehl:
git clone git://ADRESSE
Um beispielsweise den aktuellen Quellcode des Linux-Kernels in das Verzeichnis linux herunterzuladen, braucht man diesen Befehl:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux
Falls man hinter einer Firewall sitzt und der Zugriff über den Port 9418
gesperrt ist, kann man versuchen, über den fast immer offenen Port 80 auf das Repository zuzugreifen. Der entsprechende Befehl sieht folgendermaßen aus:
git clone http://ADRESSE
Entwicklung mit Git¶
Einrichtung¶
Vor Arbeitsbeginn sollte man den eigenen Namen und eine E-Mail-Adresse eintragen:
git config --global user.name NAME git config --global user.email EMAIL@ADRESSE.de
Diese Daten erscheinen in der Beschreibung einer Veränderung und dienen der Identifizierung des Autors einer Revision, falls mehrere Entwickler an einem Projekt arbeiten. Um die Lesbarkeit zu erhöhen, sollte man die Ausgaben mit den folgenden Befehlen einfärben:
git config --global color.ui "auto"
Für Computer mit mehreren Prozessorkernen empfiehlt sich diese Option:
git config --global pack.threads "0"
Grundlagen¶
Zuerst erstellt man einen Ordner für das Projekt und wechselt in diesen Ordner. Dort führt man nun den Befehl
git init
aus. Der Befehl erstellt das Git-Repository mit den nötigen Angaben. Nun erstellt man den Quellcode des Programms und fügt die Datei(en) mit dem Befehl
git add DATEI
zum Git-Repository hinzu. Hat man nun wieder etwas am Quellcode verändert, erstellt man mit
git commit -m "ÄNDERUNGSBESCHREIBUNG"
eine Revision. Wenn man beim letzten Commit eine Veränderung vergessen hat, kann man diese mit
git add DATEI
hinzufügen, und dann das vorhergehende Commit mit
git commit --amend
abändern (hierbei wird das letzte Commit verändert, also bei zuvor veröffentlichtem Repository nicht zu empfehlen).
Will man den Quellcode nun auf einen Server laden, führt man diesen Befehl aus:
git push ADRESSE BRANCHNAME
Hat nun ein anderer Entwickler den Quellcode verändert, kann man die lokale Version mit dem Befehl
git pull
aktualisieren. Wenn man nun etwas am Quellcode verändert oder einen Patch eingespielt hat, dies aber rückgängig machen möchte, benutzt man
git checkout -f
oder alternativ
git reset --hard
Diese Befehle setzen alle unbestätigten lokalen Veränderungen zurück. Mit dem nächsten Befehl kann man auflisten, welche Dateien versioniert werden:
git ls-files
Auslassen mit .gitignore¶
Ein Beispiel, das für jedes Projekt angepasst werden kann:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # generic files to ignore # backup files (*~) and vim swap file (.swp), MacOS dir file (.DS_Store) *~ *.lock *.DS_Store .*.swp *.out # IDE files to ignore (Netbeans, Eclipse) nbproject/private/ .classpath .project .settings # ignore generated .class files *.class # except this file !.gitignore |
Branches¶
Hat man mehrere Entwicklungszweige zu pflegen (bspw. stable und testing), kann man sich der Branches bedienen. Um bestehende Branches anzuzeigen, gibt man diesen Befehl ein:
git branch
Um nun einen neuen Branch zu erstellen, muss nur der folgende Befehl eingegeben werden:
git branch BRANCHNAME
Um in eine anderen Branch zu wechseln, verwendet man diesen Befehl:
git checkout BRANCHNAME
Patch erstellen¶
Ein git-Commit kann recht einfach, z.B. mit
git format-patch cfe0a421d7d334499fb5de4ab2c4e2178a4630f3 --stdout > PATCHDATEI.patch
in einen Patch (namens PATCHDATEI.patch) verwandelt werden. Der Commit-Hash (z.B. cfe0a421d7d334499fb5de4ab2c4e2178a4630f3
) ist entsprechend anzupassen. Mit folgendem Befehl kann der Patch dann angewandt werden:
patch -p1 < PATCHDATEI.patch
Graphische Oberflächen für Git¶
gitk¶
gitk ist eine einfache Tk-Oberfläche für Git, die einfach installiert werden kann:
gitk
Befehl zum Installieren der Pakete:
sudo apt-get install gitk
Oder mit apturl installieren, Link: apt://gitk
Zum Start verwendet man den Befehl:
gitk
Der aktive Branch wird angezeigt. Alle Branches zeigt der Befehl:
gitk --all
Das Programm git-gui wird zusätzlich benötigt, wenn z.B. git blame Funktionalität innerhalb von gitk genutzt wird.
git-gui¶
git-gui ist die Standardoberfläche für Git, die über das folgende Paket installiert werden kann:
git-gui (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install git-gui
Oder mit apturl installieren, Link: apt://git-gui
Zum Start verwendet man diesen Befehl:
git gui
Mit ihr lassen sich die alltäglichen Aufgaben komfortabel erledigen. Sie ist ein offizieller Bestandteil des Git-Projektes.
qgit¶
qgit 🇬🇧 ist eine Qt-basierte Oberfläche für Git, die nicht vom Git-Projekt, sondern extern entwickelt wird. Installiert wird sie über das Paket:
qgit (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install qgit
Oder mit apturl installieren, Link: apt://qgit
Auch mit dieser Oberfläche kann man bequem arbeiten.
gitg¶
Grafischer Repository-Betrachter für GNOME:
gitg
Befehl zum Installieren der Pakete:
sudo apt-get install gitg
Oder mit apturl installieren, Link: apt://gitg
Problembehebung¶
Git und Subversion¶
Sollte man gezwungen sein, mit einem Subversion-Server zu arbeiten, kann man zur lokalen Verwaltung trotzdem Git einsetzen. Man muss nur das entsprechende Paket installieren:
git-svn
Befehl zum Installieren der Pakete:
sudo apt-get install git-svn
Oder mit apturl installieren, Link: apt://git-svn
Links¶
Projektseite 🇬🇧
Git-Referenz für schnellen aber dennoch umfangreichen Einstieg 🇬🇧
Git Howto 🇩🇪 - freiesMagazin 08/2008
GitHub 🇬🇧 - Kostenlose Git-Repositorien für Open Source-Programme
Gitorious 🇬🇧 - dto.
giggle 🇬🇧 - GUI für Git
Git Einrichtung 🇩🇪 - Blogbeitrag 05/2009 über Repository-Einrichtung auf Server und Client
Git Wiki 🇩🇪 – Deutschsprachiges GIT-Wiki (befindet sich im Aufbau)
Linus Torvalds über Git 🇬🇧 14.5.2007
Dezentrale Versionsverwaltungssysteme (alternativ):