Sök…
Enkla alias
Det finns två sätt att skapa alias i Git:
- med filen
~/.gitconfig
:
[alias]
ci = commit
st = status
co = checkout
- med kommandoraden:
git config --global alias.ci "commit"
git config --global alias.st "status"
git config --global alias.co "checkout"
När aliaset har skapats - skriv:
-
git ci
istället förgit commit
, -
git st
istället förgit status
, -
git co
istället förgit checkout
.
Som med vanliga git-kommandon kan alias användas bredvid argument. Till exempel:
git ci -m "Commit message..."
git co -b feature-42
Lista / sök på befintliga alias
Du kan lista befintliga gitalias med --get-regexp
:
$ git config --get-regexp '^alias\.'
Söker alias
För att söka alias , lägga till följande till .gitconfig
enligt [alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
Då kan du:
-
git aliases
- visa ALLA alias -
git aliases commit
- bara alias som innehåller "commit"
Avancerade alias
Med Git kan du använda icke-git-kommandon och full sh
skal-syntax i dina alias om du prefixerar dem med !
.
I din ~/.gitconfig
fil:
[alias]
temp = !git add -A && git commit -m "Temp"
Det faktum att full skalsyntax finns i dessa prefixade alias betyder också att du kan använda skalfunktioner för att konstruera mer komplexa alias, till exempel sådana som använder kommandoradsargument:
[alias]
ignore = "!f() { echo $1 >> .gitignore; }; f"
Ovanstående alias definierar f
funktionen, kör sedan den med alla argument du skickar till aliaset. Så kör git ignore .tmp/
skulle lägga till .tmp/
till din .gitignore
fil.
Faktum är att detta mönster är så användbart att Git definierar $1
, $2
etc. variabler för dig, så att du inte ens behöver definiera en speciell funktion för det. (Men kom ihåg att Git också lägger till argumenten ändå, även om du kommer åt det via dessa variabler, så du kanske vill lägga till ett dummy-kommando i slutet.)
Observera att alias förinställda med !
på detta sätt körs från rotkatalogen till din git-kassa, även om din nuvarande katalog är djupare i trädet. Detta kan vara ett användbart sätt att köra ett kommando från roten utan att behöva cd
där uttryckligen.
[alias]
ignore = "! echo $1 >> .gitignore"
Ignorera spårade filer tillfälligt
För att tillfälligt markera en fil som ignorerad (skicka fil som parameter till alias) - skriv:
unwatch = update-index --assume-unchanged
För att starta spårningsfilen igen - skriv:
watch = update-index --no-assume-unchanged
För att lista alla filer som tillfälligt ignorerats - skriv:
unwatched = "!git ls-files -v | grep '^[[:lower:]]'"
För att rensa listan som inte övervakas - skriv:
watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"
Exempel på användning av alias:
git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall
Visa vacker logg med grendiagram
[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'
Här en förklaring av de alternativ och platshållare som används i - --pretty
format (uttömmande lista finns med git help log
)
- diagram - rita åtagandeträdet
- datum-beställning - använd engagera tidstämpelorder när det är möjligt
- första-förälder - följ bara den första föräldern på sammanslagningsnoden.
- grenar - visa alla lokala grenar (som standard visas endast aktuell filial)
- allt - visa alla lokala och fjärrgrenar
% h - hashvärde för commit (förkortat)
% annons - Datumstämpel (författare)
% an - Författarens användarnamn
% an - Begå användarnamn
% C (auto) - för att använda färger definierade i avsnittet [färg]
% Creset - för att återställa färg
% d - - dekorera (namn på grenar & taggar)
% s - begå meddelandet
% annons - författarens datum (kommer att följa - datumdirektivet) (och inte pendeldatum)
% an - författarnamn (kan vara% cn för pendlarnamn)
Uppdatera koden samtidigt som du har en linjär historik
Ibland måste du hålla en linjär (icke-grenad) historik för dina kodåtaganden. Om du arbetar på en gren ett tag kan det vara svårt om du måste göra en vanlig git pull
eftersom det kommer att registrera en sammanslagning med uppströms.
[alias]
up = pull --rebase
Detta kommer att uppdateras med din uppströms källa, och sedan applicera allt arbete du inte har pressat ovanpå vad du drog ner.
Att använda:
git up
Se vilka filer som ignoreras av din .gitignore-konfiguration
[ alias ]
ignored = ! git ls-files --others --ignored --exclude-standard --directory \
&& git ls-files --others -i --exclude-standard
Visar en rad per fil så att du kan grep (endast kataloger):
$ git ignored | grep '/$'
.yardoc/
doc/
Eller räkna:
~$ git ignored | wc -l
199811 # oops, my home directory is getting crowded
Scenerade scener
Normalt, för att ta bort filer som är avsedda att begås med hjälp av git reset
commit, har reset
många funktioner beroende på de argument som tillhandahålls för det. För att fullständigt avställa alla iscensatta filer kan vi använda git alias för att skapa ett nytt alias som använder reset
men nu behöver vi inte komma ihåg att tillhandahålla rätt argument för att reset
.
git config --global alias.unstage "reset --"
Nu, när du vill avstegga filer i fasen, skriv git unstage
och du är bra att gå.