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 statt git commit ,
  • git st statt git status ,
  • git co statt git 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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow