Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
/ HomePage / Computer / Software / Programmierung / EntwicklerTools / Versionsverwaltung / GitBenutzen
Die Installation von git gestaltet sich unter Linux recht einfach.
Apt installiert dann git, welches anschließend im Terminal zur Verfügung steht.
Auch unter Gentoo ist git dann ausschließlich im Terminal verfügbar.
Für Windows sollte man sich Git von der offiziellen Homepage herunterladen. Hier empfehle ich die portable Version. Hat man diese entpackt, kann man die Datei git-cm.bat ausführen. Anschließend hat man eine Eingabeaufforderung, in der alle git Befehle zur Verfügung stehen.
Man kann eigentlich sofort mit Git arbeiten. Dennoch sollte man ein paar Einstellungen setzen, damit Commits mit dem eigenen Namen angezeigt werden.
In einigen Netzwerken wird die Verbindung zum Internet über einen Proxy Server hergestellt. In diesem Fall muss man Git den Proxy-Server bekannt machen. Dieses geschieht mit folgendem Befehl:
Proxy ohne Authentifizierung
Proxy mit Authentifizierung
Jeder commit sollte mit dem eigenen Namen und E-Mail Adresse gemacht werden. Um diesen für Git zu setzen, findet folgender Befehl Anwendung.
Git kann in der Eingabeaufforderung etwas Farbe bekennen. Diese trägt deutlich der Übersicht der Git Ausgaben bei und sollte mit folgenden Befehlen aktiviert werden.
Wenn man mal nicht weiter weiß, kann man durch Eingabe von git (ohne Parameter) die Git Kurzhilfe aufrufen. Diese ist sehr hilfsbereit und versucht immer sinnvolle Vorschläge zu unterbreiten:
Sind alle Schritte soweit durchgeführt worden, kann man ein neues Repository erstellen. Dafür legen wir uns einen neuen Ordner an oder wechseln in einen Ordner, dessen Inhalt wir unter die Quellcodeverwaltung von Git stellen möchten.
"git init ." erstellt ein leeres Git Repository im aktuellen Verzeichnis. "git add ." fügt alle im Verzeichnis vorhandenen Dateien der Versionsverwaltung hinzu. "git commit -a -m" führt einen lokalen commit durch und versioniert damit den aktuell im Verzeichnis befindlichen Stand. Die letzten beiden Befehle solltest Du dir merken.
Eigentlich gibt es kein zentrales Repository bei git, jeder hat sein eigenes, um die Arbeit aber zu erleichtern, legt man doch irgendwo an zentraler Stelle ein Repository für alle Benutzer an, von dem dann alle clonen.
Dazu legt man ein Repository mit git init --bare
an und verschiebt dies auf den entfernten Rechner, oder legt es gleich dort an.
Man kann auch sein eigenes/lokales Repository irgendwo zentral ablegen, so dass alle es als zentrales Repository nutzen. Allerdings motzt git beim push dann rum.
remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current branch in a non-bare repository remote: error: is denied, because it will make the index and work tree inconsistent remote: error: with what you pushed, and will require 'git reset --hard' to match remote: error: the work tree to HEAD. ...
Das kann man umgehen, indem man im zentralen Repository in der Datei .git/config
folgendes einfügt:
[receive] denyCurrentBranch = ignore
Jetzt wird ignoriert, das die vorhandenen Sourcen und der .git/*
Content auseinander laufen.
Möchte man ein entferntes Repository auschecken/clonen, dann verwendet man folgenden Befehl. Da es sich bei Git um eine dezentrale Versionsverwaltung handelt, werden commits immer nur in der lokalen Kopie gemacht und stehen erst mal nur einem selbst zur Verfügung. Daher trifft der Begriff clone eher zu, als der Begriff auschecken.
git erlaubt es sog. Changesets zu erstellen.
Gibt z.B. die letzten 10 log aus, zusätzlich die commit hashes. Und die werden gebraucht.
Gibt die Differenz im patch format aus (Zeilen mit '-' am Anfang werden entfernt, Zeilen mit '+' am Anfang werden hinzugefügt) Es werden immer 3 Zeilen über und 3 Zeilen unter der eigentlichen Änderung mit ausgegeben, so kann patch auch noch arbeiten, wenn es schon andere Änderungen an den Sourcen gibt.
Tip: Von den Commit hashes braucht man meist nur die ersten 7-8 Zeichen einzugeben, um diese eindeutig zu identifizieren.
Den Output kann man auch in eine patch Datei redirekten ( >/c/temp/datei.patch ) anhängen.
Zum Einfügen bindet man den Patch wieder ein mit:
Gibt es dabei Fehler, fangen die Patches an auseinander zu laufen, dann hilft evtl. gesunder Menschenverstand und ein guter Compiler.
So lassen sich einfachst Änderungen an beliebig vielen Dateien in einem Patch zwischen den Repositories hin und her schieben. Wenn die Sourcen allerdings schon zu stark auseinander gelaufen sind, braucht man keine Diffs mehr, sondern die gesamten Dateien.
Wer dem nicht traut, (git stash) ist ein Freund
Wiederfinden von Änderungen im git GitDurchsuchen
Unter Linux brauchen Programme/Scripte spezielle Rechte, um ausgeführt werden zu dürfen. Das sog. Executable Flag x unter Linux zu setzen mit chmod unter Windows gibt es das nicht, da gibt es sehr viel feingranularere Regeln. Nevertheless, um diese Rechte zu setzen gibt es unter Git folgendes:
git update-index --chmod=+x <file>
tbc...
Es gibt mehrere sehr schöne Anwendungen für Git.
Damit lassen sich viele Git Repositorys gleichzeitig verwalten, alles wird grafisch hübsch dargestellt.
Leider gibt es SourceTree nicht für Linux. Als Ersatz bietet sich SmartGit an.
Ich nutze es nicht mehr, weil ich jedes mal eine neue Lizenz ziehen musste, das nervt.
Ist ein simples Consolen-Tool, um per Tastatur auf dem aktuellen Repository zu arbeiten.
Weiteres Consolen-Tool, sehr umfangreich und mächtig. Schöne einfache kompakte Consolen-Darstellung. TOP!