Szukaj…
Proste aliasy
Istnieją dwa sposoby tworzenia aliasów w Git:
- z plikiem
~/.gitconfig
:
[alias]
ci = commit
st = status
co = checkout
- z linii poleceń:
git config --global alias.ci "commit"
git config --global alias.st "status"
git config --global alias.co "checkout"
Po utworzeniu aliasu wpisz:
-
git ci
zamiastgit commit
, -
git st
zamiastgit status
, -
git co
zamiastgit checkout
.
Podobnie jak w przypadku zwykłych poleceń git, oprócz argumentów można używać aliasów. Na przykład:
git ci -m "Commit message..."
git co -b feature-42
Wyświetl / wyszukaj istniejące aliasy
Możesz wyświetlić listę istniejących aliasów git za pomocą --get-regexp
:
$ git config --get-regexp '^alias\.'
Wyszukiwanie aliasów
Aby wyszukać aliasy , dodaj następujące polecenie do .gitconfig
obszarze [alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
Następnie możesz:
-
git aliases
- pokaż WSZYSTKIE aliasy -
git aliases commit
- tylko aliasy zawierające „commit”
Zaawansowane aliasy
Git pozwala używać poleceń innych niż git i składni pełnej powłoki sh
w aliasach, jeśli je poprzedzisz !
.
W twoim pliku ~/.gitconfig
:
[alias]
temp = !git add -A && git commit -m "Temp"
Fakt, że pełna składnia powłoki jest dostępna w tych prefiksowanych aliasach, oznacza również, że możesz używać funkcji powłoki do konstruowania bardziej złożonych aliasów, takich jak te, które wykorzystują argumenty wiersza poleceń:
[alias]
ignore = "!f() { echo $1 >> .gitignore; }; f"
Powyższy alias definiuje funkcję f
, a następnie uruchamia ją z dowolnymi argumentami przekazanymi do aliasu. Więc uruchomienie git ignore .tmp/
doda .tmp/
do twojego pliku .gitignore
.
W rzeczywistości ten wzorzec jest tak przydatny, że Git definiuje dla ciebie zmienne $1
$2
itp., Więc nie musisz nawet definiować dla niego specjalnej funkcji. (Pamiętaj jednak, że Git i tak dołączy argumenty, nawet jeśli uzyskujesz do nich dostęp za pomocą tych zmiennych, więc możesz na końcu dodać fałszywe polecenie).
Uwaga: aliasy z prefiksem !
w ten sposób są uruchamiane z katalogu głównego kasy git, nawet jeśli bieżący katalog znajduje się głębiej w drzewie. Może to być przydatny sposób na uruchomienie polecenia z katalogu głównego bez konieczności jawnego cd
nim cd
.
[alias]
ignore = "! echo $1 >> .gitignore"
Tymczasowo zignoruj śledzone pliki
Aby tymczasowo oznaczyć plik jako ignorowany (przekaż plik jako parametr do aliasu) - wpisz:
unwatch = update-index --assume-unchanged
Aby ponownie rozpocząć śledzenie pliku - wpisz:
watch = update-index --no-assume-unchanged
Aby wyświetlić listę wszystkich plików, które zostały tymczasowo zignorowane - wpisz:
unwatched = "!git ls-files -v | grep '^[[:lower:]]'"
Aby wyczyścić nieprzypisaną listę - wpisz:
watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"
Przykład użycia aliasów:
git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall
Pokaż ładny dziennik z wykresem gałęzi
[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'
Oto objaśnienie opcji i symboli zastępczych używanych w formacie --pretty
(wyczerpująca lista jest dostępna z git help log
)
--graph - narysuj drzewo zmian
- order-order - użyj kolejności znaczników czasu zatwierdzenia, jeśli to możliwe
--first-parent - śledź tylko pierwszego rodzica w węźle scalania.
- oddziały - pokaż wszystkie oddziały lokalne (domyślnie pokazywana jest tylko bieżąca gałąź)
--all - pokaż wszystkie oddziały lokalne i zdalne
% h - wartość skrótu dla zatwierdzenia (w skrócie)
% ad - Datownik (autor)
% an - nazwa użytkownika autora
% an - Zatwierdź nazwę użytkownika
% C (auto) - aby użyć kolorów zdefiniowanych w sekcji [kolor]
% Creset - aby zresetować kolor
% d - --dekorować (nazwy gałęzi i tagów)
% s - komunikat zatwierdzenia
% ad - data autora (będzie zgodna z dyrektywą - data) (a nie data commiter)
% an - nazwa autora (może być% cn dla nazwy osoby odpowiedzialnej)
Aktualizacja kodu przy zachowaniu historii liniowej
Czasami musisz zachować liniową (nierozgałęzioną) historię swoich zatwierdzeń kodu. Jeśli pracujesz nad gałęzią przez jakiś czas, może to być trudne, jeśli musisz wykonywać regularne git pull
ponieważ spowoduje to zarejestrowanie połączenia z wcześniejszym etapem.
[alias]
up = pull --rebase
Spowoduje to zaktualizowanie źródła źródłowego, a następnie ponowne zastosowanie każdej pracy, której nie zepchnąłeś na to, co ściągnąłeś.
Używać:
git up
Zobacz, które pliki są ignorowane przez Twoją konfigurację .gitignore
[ alias ]
ignored = ! git ls-files --others --ignored --exclude-standard --directory \
&& git ls-files --others -i --exclude-standard
Pokazuje jeden wiersz na plik, więc możesz grep (tylko katalogi):
$ git ignored | grep '/$'
.yardoc/
doc/
Lub policz:
~$ git ignored | wc -l
199811 # oops, my home directory is getting crowded
Pliki sceniczne bez scen
Zwykle, aby usunąć pliki, które zostały zatwierdzone za pomocą polecenia git reset
, reset
ma wiele funkcji w zależności od podanych argumentów. Aby całkowicie zrestartować wszystkie ustawione pliki, możemy skorzystać z aliasów git, aby utworzyć nowy alias, który używa reset
ale teraz nie musimy pamiętać o podaniu poprawnych argumentów do reset
.
git config --global alias.unstage "reset --"
Teraz, za każdym razem, gdy chcesz rozpakować pliki etapów, wpisz git unstage
i możesz zacząć.