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ör git commit ,
  • git st istället för git status ,
  • git co istället för git 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å.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow