Suche…
Einfache Aliase
Es gibt zwei Möglichkeiten zum Erstellen von Aliasnamen in Git:
- mit der Datei
~/.gitconfig
:
[alias]
ci = commit
st = status
co = checkout
- mit der Kommandozeile:
git config --global alias.ci "commit"
git config --global alias.st "status"
git config --global alias.co "checkout"
Nachdem der Alias erstellt wurde, geben Sie Folgendes ein:
-
git ci
stattgit commit
, -
git st
stattgit status
, -
git co
stattgit checkout
.
Wie bei normalen git-Befehlen können Aliase neben Argumenten verwendet werden. Zum Beispiel:
git ci -m "Commit message..."
git co -b feature-42
Vorhandene Aliase auflisten / suchen
Sie können vorhandene Git-Aliasnamen mit --get-regexp
:
$ git config --get-regexp '^alias\.'
Aliase werden gesucht
.gitconfig
Ihrer .gitconfig
unter [alias]
Folgendes hinzu, um Aliase zu suchen :
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
Dann kannst du:
-
git aliases
- zeige ALLE Aliase -
git aliases commit
- nur Aliase, die "commit" enthalten
Erweiterte Aliase
Mit Git können Sie Nicht-Git-Befehle und vollständige sh
Shell-Syntax in Ihren Aliasnamen verwenden, wenn Sie ihnen ein Präfix voranstellen !
.
In Ihrer ~/.gitconfig
Datei:
[alias]
temp = !git add -A && git commit -m "Temp"
Die Tatsache, dass die vollständige Shell-Syntax in diesen vorangestellten Aliases verfügbar ist, bedeutet auch, dass Sie Shell-Funktionen verwenden können, um komplexere Aliase zu erstellen, z. B. solche, die Befehlszeilenargumente verwenden:
[alias]
ignore = "!f() { echo $1 >> .gitignore; }; f"
Der obige Alias definiert die f
Funktion und führt sie dann mit allen Argumenten aus, die Sie an den Alias übergeben. .gitignore
git ignore .tmp/
.gitignore
würde dies zu Ihrer .gitignore
Datei .tmp/
.gitignore
.
Tatsächlich ist dieses Muster so nützlich, dass Git $1
, $2
usw. für Sie definiert, sodass Sie nicht einmal eine spezielle Funktion dafür definieren müssen. (Beachten Sie jedoch, dass Git die Argumente trotzdem anhängt, auch wenn Sie über diese Variablen darauf zugreifen. Daher möchten Sie am Ende einen Dummy-Befehl hinzufügen.)
Beachten Sie, dass Aliasnamen vorangestellt sind !
Auf diese Weise werden Sie vom Stammverzeichnis Ihrer Git-Kasse aus ausgeführt, auch wenn sich Ihr aktuelles Verzeichnis tiefer in der Baumstruktur befindet. Dies kann eine nützliche Methode sein, um einen Befehl von der Wurzel aus auszuführen, ohne dort explizit cd
ausführen zu müssen.
[alias]
ignore = "! echo $1 >> .gitignore"
Verfolgte Dateien vorübergehend ignorieren
So markieren Sie eine Datei vorübergehend als ignoriert (übergeben Sie die Datei als Parameter an einen Alias) - Geben Sie Folgendes ein:
unwatch = update-index --assume-unchanged
Um die Datei erneut zu starten, geben Sie Folgendes ein:
watch = update-index --no-assume-unchanged
Um alle Dateien aufzulisten, die vorübergehend ignoriert wurden, geben Sie Folgendes ein:
unwatched = "!git ls-files -v | grep '^[[:lower:]]'"
Um die nicht abgemeldete Liste zu löschen, geben Sie Folgendes ein:
watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"
Beispiel für die Verwendung der Aliase:
git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall
Hübsches Protokoll mit Zweigdiagramm anzeigen
[alias]
logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
lg = log --graph --date-order --first-parent \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
lgb = log --graph --date-order --branches --first-parent \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
lga = log --graph --date-order --all \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
Hier eine Erläuterung der Optionen und des Platzhalters, die im --pretty
Format verwendet werden (vollständige Liste mit git help log
)
--graph - Zeichne den Commit-Baum
--date-order - Verwenden Sie, wenn möglich, einen Commit-Zeitstempel
- first-parent - Folgen Sie nur dem ersten übergeordneten Knoten im Zusammenführungsknoten.
--branches - Zeigt alle lokalen Zweigstellen an (standardmäßig wird nur der aktuelle Zweig angezeigt)
--all - Zeigt alle lokalen und entfernten Niederlassungen an
% h - Hashwert für Festschreiben (abgekürzt)
% ad - Datumsstempel (Autor)
% an - Autor Benutzername
% an - Commit-Benutzername
% C (automatisch) - Zum Verwenden der im Abschnitt [color] definierten Farben
% Creset - zum Zurücksetzen der Farbe
% d - --decorate (Zweig- und Tag-Namen)
% s - Commit-Nachricht
% ad - Autorendatum (folgt - Direktive -Datum) (und kein Commiter-Datum)
% an - Autorenname (kann% cn für Commitername sein)
Code aktualisieren, während eine lineare Historie beibehalten wird
Manchmal müssen Sie eine lineare (nicht verzweigte) Historie Ihrer Code-Commits führen. Wenn Sie eine Zeit lang an einem Zweig arbeiten, kann dies schwierig sein, wenn Sie einen regulären git pull
da dies ein Zusammenführen mit dem Upstream aufzeichnet.
[alias]
up = pull --rebase
Dies wird mit Ihrer Upstream-Quelle aktualisiert und anschließend alle Arbeiten erneut angewendet, die Sie nicht auf das gesetzt haben, was Sie zuvor heruntergezogen haben.
Benutzen:
git up
Sehen Sie, welche Dateien von Ihrer .gitignore-Konfiguration ignoriert werden
[ alias ]
ignored = ! git ls-files --others --ignored --exclude-standard --directory \
&& git ls-files --others -i --exclude-standard
Zeigt eine Zeile pro Datei an, damit Sie grep (nur Verzeichnisse):
$ git ignored | grep '/$'
.yardoc/
doc/
Oder zählen:
~$ git ignored | wc -l
199811 # oops, my home directory is getting crowded
Inszenieren von inszenierten Dateien
Um Dateien zu entfernen, die mithilfe des git reset
Commits bereitgestellt werden, hat reset
normalerweise eine Vielzahl von Funktionen, abhängig von den dafür bereitgestellten Argumenten. Um das Gerät vollständig unstage alle Dateien aufgeführt, können wir die Verwendung von git Aliase machen , um einen neuen Alias zu erstellen , die verwendet reset
, aber jetzt brauchen wir nicht zu erinnern , die richtigen Argumente zu liefern , um reset
.
git config --global alias.unstage "reset --"
Wenn Sie nun Dateien in die Bühne bringen möchten, geben Sie git unstage
Nun können Sie loslegen .