git
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
git [2014/03/11 11:41] – fixws alias olli | git [2023/02/19 20:34] (aktuell) – [Alle Commits eines Autors anzeigen] olli | ||
---|---|---|---|
Zeile 91: | Zeile 91: | ||
benutzen. Diese Datei ist dann automatisch im Staging-Bereich. | benutzen. Diese Datei ist dann automatisch im Staging-Bereich. | ||
+ | ===== Inhalt des Stash anzeigen ===== | ||
+ | Um den Inhalt des Stash anzuzeigen, kann der Befehl | ||
+ | <code bash> | ||
+ | git stash show -p | ||
+ | </ | ||
+ | verwendet werden. | ||
+ | Ältere Stashes können mit | ||
+ | <code bash> | ||
+ | git stash show -p stash@{1} | ||
+ | </ | ||
+ | angezeigt werden. | ||
===== Grafisches git blame ===== | ===== Grafisches git blame ===== | ||
Mit | Mit | ||
Zeile 130: | Zeile 141: | ||
< | < | ||
* | * | ||
- | </ | + | </ |
+ | |||
+ | ===== Wortbasierter Diff ===== | ||
+ | Mit | ||
+ | <code bash> | ||
+ | git diff --word-diff | ||
+ | </ | ||
+ | lässt sich ein wortbasierter Diff durchführen. Für viele Sprachen enthält Git angepasste Parser. Um diese auszuwählen muss in .gitattributes für die Dateieindung die entsprechene Sprache ausgewählt werden, z.B.: | ||
+ | < | ||
+ | *.m diff=matlab | ||
+ | </ | ||
+ | Dabei dürfen keine Leerzeichen zwischen diff, dem Gleichheitszeichen und der Sprache stehen. | ||
+ | Eine Liste der unterstützten Sprachen findet sich im [[https:// | ||
+ | |||
+ | ===== Editor für Commit-Message setzen ===== | ||
+ | Der Editor, den Git zum Bearbeiten der Commit-Messages aufruft, kann auf mehrere Arten konfiguriert werden. Mit der Konfigurationsvariablen core.editor | ||
+ | <code bash> | ||
+ | git config --global core.editor " | ||
+ | </ | ||
+ | oder den Umgebungsvariablen GIT_EDITOR, VISUAL, EDITOR | ||
+ | <code bash> | ||
+ | export GIT_EDITOR=nano | ||
+ | export VISUAL=nano | ||
+ | export EDITOR=nano | ||
+ | </ | ||
+ | Die Reihenfolge der Auswertung ist GIT_EDITOR, core.editor, | ||
+ | |||
+ | ===== Mehrere Remotes ===== | ||
+ | git kann mehrere remotes verwalten. Das ist für das Pushen auf mehrere Server praktisch. | ||
+ | |||
+ | Remote hinzufügen: | ||
+ | <code bash> | ||
+ | git remote add < | ||
+ | </ | ||
+ | Pushen: | ||
+ | <code bash> | ||
+ | git push < | ||
+ | </ | ||
+ | |||
+ | ===== Dateien, die nicht im Repo sind, entfernen | ||
+ | Dateien, die nicht im Repository sind (untracked), | ||
+ | <code bash> | ||
+ | git clean -n | ||
+ | </ | ||
+ | wird ein Trockenlauf durchgeführt. Mit dem Parameter '' | ||
+ | |||
+ | ===== Alle Commits eines Autors anzeigen ===== | ||
+ | Um alle Commits eines bestimmten Autors aufzulisten, | ||
+ | <code bash> | ||
+ | git log --author=" | ||
+ | </ | ||
+ | Der Name muss nicht vollständig angegeben werden. | ||
+ | Statt des Namens kann auch eine Email-Adresse (oder ein Teil davon) angegeben werden. | ||
+ | Um nicht nur den aktuellen Branch, sondern alle zu durchsuchen, | ||
+ | |||
+ | ===== Prüfen, ob Branch einen Commit enthält ===== | ||
+ | Um zu prüfen, ob ein Branch einen gegebenen Commit enthält kann man den folgenden Befehl verwenden: | ||
+ | <code bash> | ||
+ | git branch -a --contains < | ||
+ | </ | ||
+ | |||
+ | <WRAP important round> | ||
+ | Commits, die über einen Rebase oder Cherry-Pick ins Repo gekommen sind, werden so nicht gefunden. | ||
+ | </ | ||
+ | |||
+ | ===== Autor nachträglich ändern ===== | ||
+ | Um den Autor oder die Emailadresse nachträglich zu korrigieren, | ||
+ | * [[https:// | ||
+ | * Emailadressen im Skript anpassen | ||
+ | * Skript ausführen | ||
+ | * Änderungen pushen | ||
+ | |||
+ | <WRAP important round> | ||
+ | Diese Operation schreibt die History neu. | ||
+ | Wenn die Commits schon öffentlich sind, sollte man dies nur in Ausnahmefällen tun. | ||
+ | </ | ||
+ | |||
+ | ===== Sparse Checkout ===== | ||
+ | Um nur Teile (z.B. ein Unterzeichnis) eines Repositories auszuchecken, | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== Branch in eigenes Repository ===== | ||
+ | Um einen Branch '' | ||
+ | <code bash> | ||
+ | git push url:// | ||
+ | </ | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | ===== Leere Verzeichnisse commiten ===== | ||
+ | Leere Verzeichnisse lassen sich nicht einchecken, der [[https:// | ||
+ | < | ||
+ | # Ignore everything in this directory | ||
+ | * | ||
+ | # Except this file | ||
+ | !.gitignore | ||
+ | </ | ||
+ | Andere Möglichkeit sind leere Dateien wie '' | ||
+ | Eine Diskussion dazu findet sich auch in obigem Link. | ||
+ | |||
+ | ===== git pull oder fetch hängt ===== | ||
+ | Wenn '' | ||
+ | <code bash> | ||
+ | GIT_TRACE=true git pull | ||
+ | </ | ||
+ | ein Trace einschalten. | ||
+ | Auch die Verwendung des von Github deaktivierten, | ||
+ | |||
===== Nützliche Aliases ===== | ===== Nützliche Aliases ===== | ||
Diese Aliases können in die ~/ | Diese Aliases können in die ~/ | ||
- | < | + | < |
[alias] | [alias] | ||
st = status | st = status | ||
Zeile 144: | Zeile 264: | ||
# List all aliases. | # List all aliases. | ||
aliases = config --get-regexp alias | aliases = config --get-regexp alias | ||
- | # Fix whitespace from here: http:// | + | |
+ | # http:// | ||
# Fix whitespace in the index while preserving a dirty tree, if | # Fix whitespace in the index while preserving a dirty tree, if | ||
# any. | # any. | ||
Zeile 188: | Zeile 309: | ||
git rebase --whitespace=fix HEAD~ && \ | git rebase --whitespace=fix HEAD~ && \ | ||
git reset --soft HEAD~ ; \ | git reset --soft HEAD~ ; \ | ||
- | fi" | + | fi" |
+ | #resets binary permission to the ones in the repo | ||
+ | # from https:// | ||
+ | permission-resetb = "!git diff -p --no-ext-diff --no-color --diff-filter=d | grep -E \" | ||
</ | </ | ||
- | git sed ersetzt in allen Dateien im Repository old-name durch new-name (siehe Bespiel). Dies ist sicherer als die entsprechende Lösung mit "find .", da dabei Verwaltungsdateien von Git mit verändert werden können. | + | '' |
Beispiel: | Beispiel: | ||
Zeile 200: | Zeile 324: | ||
===== Links ===== | ===== Links ===== | ||
* [[http:// | * [[http:// | ||
- | * [[https:// | + | * [[https:// |
+ | * [[https:// | ||
git.1394534477.txt.gz · Zuletzt geändert: 2014/03/11 11:41 von olli