Git/Aliasy
Git je mocný nástroj s mnoha užitečnými možnostmi. Věděli jste, že si můžete vytvořit alias pro příkaz a sadu možností? Už nebudete muset psát dlouhé jednořádkové věty. Níže je uveden seznam některých užitečných aliasů.
Jak nastavit alias
Do položky ~/.gitconfig přidejte sekci [alias].
Pak má každý řádek formát <tab>key = value.
Níže je uveden úryvek sekce [alias] ze souboru .gitconfig.
[alias]
short-name = actual (long?) command
Všechno
Pokud chcete získat vše najednou, zde je seznam všech aliasů na této stránce:
[alias]
amend = commit --amend -a
br = branch
branch-cleanup = "!f() { git branch --merged ${1-master} | grep -v " ${1-master}$" | xargs -n 1 git branch -d; }; f"
co = checkout
ds = diff --staged
di = diff
fetchall = fetch -v --all
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(cyan)<%an>%Creset' --abbrev-commit --date=relative
l = ! git lg -n25
log-me = !UN=$(git config user.name)&& git log --author="\"$UN\"" --pretty=format:'%h %cd %s' --date=short
log-nice = log --graph --decorate --pretty=oneline --abbrev-commit
panic = !tar cvf ../git_panic.tar *
st = status
wdiff = diff --word-diff=plain
amend
[alias]
amend = commit --amend -a
- Příklad
git amend
S Gerritem budete možná muset opravit sadu záplat. To obvykle znamená úpravu souborů a následnou nutnost opravy předchozí zprávy o potvrzení (commitu). Pracovní postup by byl přibližně takový:
$ git review -d 1234 // gerrit changeset id <edit files> $ git add <files> $ git commit --amend <update commit-msg>
Pokud jste pouze změnili soubory (nepřidali nové), lze poslední dva příkazy seskupit pomocí přepínače git commit --amend -a.
br
[alias]
br = branch
- Příklad
git br foo --track origin/foogit br -D some/old/branch
branch-cleanup
[alias]
branch-cleanup = "!f() { git branch --merged ${1-master} | grep -v " ${1-master}$" | xargs -n 1 git branch -d; }; f"
Tím se smažou všechny odkazy na větve, které jsou plně sloučeny do větve master (nebo do jiné větve, pokud ji zadáte).
co
[alias]
co = checkout
- Příklad
git co master
ds
[alias]
ds = diff --staged
- Příklad
git ds
Prostý znak git diff ukazuje rozdíl mezi (nepřipravenou) pracovní kopií a připravenou pracovní kopií.
Ve většině případů je to stejný rozdíl jako mezi pracovní kopií a poslední potvrzenou revizí aktuální větve (HEAD).
Pokud jste však již provedli git add a poté jste provedli další změny, změny k datu posledního git add se již v git diff nezobrazují.
Použijte git diff --staged k vytvoření rozdílu mezi již připravenými (ale nepotvrzenými) změnami a aktuálním HEAD.
di
[alias]
di = diff
- Příklad
git di
fetchall
[alias]
fetchall = fetch -v --all
- Příklad
git fetchall
V tomto případě jsou origin i gerrit stejné, což pro výše uvedený snímek obrazovky stačí.
git remote updatelg
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(cyan)<%an>%Creset' --abbrev-commit --date=relative
l = ! git lg -n25
- Příklad
git lg(výchozí, s pagerem) nebogit l(pouze poslední 25)
log-me
Jméno autora rozlišuje velká a malá písmena.
[alias]
log-me = !UN=$(git config user.name)&& git log --author="\"$UN\"" --pretty=format:'%h %cd %s' --date=short
- Příklad
git log-me -n20
log-nice
[alias]
log-nice = log --graph --decorate --pretty=oneline --abbrev-commit
- Příklad
git log-nice -n20
panic
[alias]
panic = !tar cvf ../git_panic.tar *
Někdy se může stát, že jste v gitu udělali něco špatně. Myslíš, že jsi ztratil commity, nebo něco podobného. Je pravděpodobné, že informace jsou stále k dispozici, takže nejlepším postupem je okamžitě si je zálohovat, než riskujete skutečnou ztrátu dat.
st
[alias]
st = status
- Příklad
git st
wdiff
[alias]
wdiff = diff --word-diff=plain
- Příklad
git wdiff



