2012-06-21 8 views
10

Czy istnieje opcja wyświetlenia pełnego polecenia podczas używania aliasu?Wyświetl pełne polecenie podczas wykonywania aliasu Git?

Przykład:

$ git ci -m "initial commit" 
Full command: git commit -m "initial commit" 
... 
$ git lg 
Full command: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 
... 

Pseudonimy są bardzo wygodne, ale chciałbym dowiedzieć się/otrzymywać przypomnienia, co moi alias faktycznie (większość moich aliasów są kopiowane z Internetu)

Odpowiedz

2

Jako przykład:

log-1 = "!sh -c 'echo \"Full command: git log --graph --decorate --pretty=oneline --abbrev-commit\"; git log --graph --decorate --pretty=oneline --abbrev-commit' -"

zadzwonić skorupę i wykonać podanych poleceń.

W twoim przykładzie lg, musielibyśmy zrobić dużo ucieczki, ponieważ masz cytaty wewnątrz qoutes i znaków, które muszą zostać zmienione. Proponuję stworzyć własny ładny format i użyć go w aliasie. Załóżmy, że nazywamy twój format. To, co trzeba zrobić:

git config --add pretty.mine "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset"

i alias byłoby

lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"

0

Jeśli używasz bash można dodać "set -x" do aliasu. Tak więc, jako prosty przykład, jeśli masz alias:

ol = !sh -c 'git log --oneline' 

ty by go zmienić na:

ol = "!sh -c 'set -x; git log --oneline'" 

potrzebuje cudzysłowie bo średnikiem.

Aby pozwolić na pozostałą część wiersza poleceń, należy dodać "$ @", a także umieścić "-", aby argumenty zaczynały się od 1 $. To daje:

ol = "!sh -c 'set -x; git log --oneline [email protected]' -" 

Bardziej skomplikowane aliasy prawdopodobnie będą już mieć te rzeczy.

Nie wiem, jak to ustawić na całym świecie dla wszystkich aliasów, choć byłoby miło mieć!

EDYTOWANIE: To faktycznie działa trochę łatwiej używając zamiast tego funkcji powłoki. Możesz zrobić coś takiego:

git config alias.ol '!f() { set -x; git log --oneline [email protected]; }; f' 

, aby uzyskać taki sam efekt jak powyżej.

+0

Nie jestem pewien, czy zadziała z aliasami git (tj. Zdefiniowanymi w git config). – CharlesB

+0

To będzie. Właśnie tam go wypróbowałem. – seumasmac

+0

Mam na myśli, jeśli aliasy logów git do git log --oneline ** w git config **, czy to zadziała? – CharlesB

3

Inną opcją jest idee polecenia wymienione w sekcji wiki Git na Aliases daje wich, na odcinku alias z .git/config

[alias]

aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' 

To wtedy wymienia wszystkie swoje aliasy jak linie poleceń.

Powiązane problemy