Git
Aus ConeleK-Wiki
Inhaltsverzeichnis |
Allgemeine Konfiguration
Generischer Befehl:
git configGit speichert Einstellungen auf drei Ebenen:
- --file (default): für das aktuelle Repository
- --global: für den aktuellen Benutzer
- --system: für das gesamte System
Die wichtigsten Funktionalitäten sind:
- Einstellung abfragen:
git config --global <option>
- Einstellung setzen (--replace-all, da sonst ein weiterer und kein neuer Wert für <option> gespeichert wird):
git config --global --replace-all <option> <value>
- Einstellungen abfragen:
git config --global --list
Nützliche Optionen sind dabei (Git macht auch Vorschläge, wenn man TAB betätigt):
- user.name: Benutzername für Commit-Nachrichten
- user.e-mail: Mailadresse für Commit-Nachrichten
- core.editor: Editor für Nachrichten oder längere Texte (bspw. nano oder [Vim])
- alias: Setzt mal beispielsweise alias.co auf checkout, dann kann man einen Checkout von nun an auch neben dem ursprünglichen langen git checkout mit dem Kurzbefehl git co durchführen.
Repository initialisieren
- Repository im aktuellen Verzeichnis neu erstellen:
git init - Ein existierendes Repository ins aktuelle Verzeichnis klonen (--shared: auch andere Benutzer des Systems können darauf zugreifen):
git clone --shared <url> .
- Diese Seite wird von nun an den Namen origin tragen.
Hinzufügen, Entfernen und Anzeigen von Dateien
- Datei file.txt zum Repository hinzufügen
git add file.txt- Dies funktioniert auch für Verzeichnisse.
- Git fügt keine leeren Verzeichnisse hinzu!
- Der Befehl git add file.txt hat noch zwei weitere Funktionen:
- Stage: Falls die Datei file.txt in den nächsten Commit aufgenommen werden soll.
- Resolved: Falls die Datei file.txt einen Konflikt hatte und jetzt als gelöst (resolved) markiert werden soll.
- Datei file.txt aus dem Repository löschen:
- Datei file.txt auch vom Dateisystem löschen:
git rm file.txt
- Datei file.txt nicht vom Dateisystem löschen:
git rm --cached file.txt
- Datei file.txt auch vom Dateisystem löschen:
- Alle aktuelle versionierten Dateien anzeigen:
git ls-files - Aktuellen Status anzeigen (Was wird committed? Was wurde verändert?):
git status- Mit der Option -v bekommt man die Differenz zum Original angezeigt.
Änderungen rückgängig machen
Das Äquivalent eines Reverts (svn revert file.txt) bei Subversion lautet:git reset HEAD test.txt # only necessary if file has been deleted git checkout -- test.txt
Entferntes Repository
- Änderungen holen (Äquivalent eines Update - svn update- bei Subversion):
- Falls man nur eine entfernte Seite hat, dann ist der Aufruf einfach:
git pull - Ansonsten muss man die entfernte Seite mit Namen (origin) (und ggfs. sogar Branch - master - nennen):
git pull origin master
- Falls man nur eine entfernte Seite hat, dann ist der Aufruf einfach:
- Änderungen schreiben (Äquivalent eines Commit - svn commit- bei Subversion)
- Falls man nur eine entfernte Seite hat, dann ist der Aufruf einfach:
git push - Ansonsten muss man die entfernte Seite mit Namen (origin) (und ggfs. sogar Branch - master - nennen):
git push origin master
- Falls man nur eine entfernte Seite hat, dann ist der Aufruf einfach:
Gespeicherte Zwischenstände (Tags)
Git bietet anders als Subversion eine integrierte Verwaltung von Tags:
- Alle Tags auflisten:
git tag - Tag erstellen (-f erzwingt Überschreiben):
git tag -a "Version_1.0"
- Tag löschen:
git tag -d "Version_1.0"
Zweige (Branches)
- Alle Tags auflisten:
git branch -
Branch neuer_branch erstellen
git checkout -b "neuer_branch"
-
Branch löschen:
git checkout master # Branch verlassen git branch -d "neuer_branch"
- Änderungen aus dem Branch neuer_branch in den Branch master übernehmen:
git checkout master # Branch wechseln git merge "neuer_branch" # Änderungen integrieren
GitHub mit einem anderen Identity File verwenden
Normalerweise nimmt der SSH-Befehl an, dass der öffentliche Schlüssel unter ~/.ssh/id_rsa.pub zu finden ist. Möchte man nun einen anderen Schlüssel verwenden, dann sind die folgenden Schritte nötig:
- Füge eine Hostdefinition in die Datei ~/.ssh/config ein:
Host github Port 22 Hostname github.com User git IdentityFile ~/.ssh/github_key
- Hinzufügen/Klonen der remote site:
git remote add origin ssh://github/RomeoKilo/repository
Links
- Sehr schön illustrierte Anleitung zu Git [1]