Zoeken…


Eenvoudige aliassen

Er zijn twee manieren om aliassen in Git te maken:

  • met het bestand ~/.gitconfig :
[alias]
    ci = commit
    st = status
    co = checkout
  • met de opdrachtregel:
 git config --global alias.ci "commit"
 git config --global alias.st "status"
 git config --global alias.co "checkout"

Nadat de alias is gemaakt, typt u:

  • git ci plaats van git commit ,
  • git st plaats van git status ,
  • git co plaats van git checkout .

Net als bij reguliere git-opdrachten kunnen aliassen naast argumenten worden gebruikt. Bijvoorbeeld:

 git ci -m "Commit message..."
 git co -b feature-42

Lijst / zoek bestaande aliassen

Je kunt bestaande git-aliassen weergeven met --get-regexp :

$ git config --get-regexp '^alias\.'

Aliassen zoeken

Om aliassen te zoeken , voegt u het volgende toe aan uw .gitconfig onder [alias] :

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

Dan kunt u:

  • git aliases - toon ALLE aliassen
  • git aliases commit - alleen aliassen die "commit" bevatten

Geavanceerde aliassen

Met Git kun je niet-git-opdrachten en volledige sh shell-syntaxis gebruiken in je aliassen als je ze voorafgaat ! .

In uw ~/.gitconfig bestand:

[alias]
    temp = !git add -A && git commit -m "Temp"

Het feit dat volledige shell-syntaxis beschikbaar is in deze voorvoegsels, betekent ook dat u shell-functies kunt gebruiken om complexere aliassen te maken, zoals degenen die opdrachtregelargumenten gebruiken:

[alias]
    ignore = "!f() { echo $1 >> .gitignore; }; f"

De bovenstaande alias definieert de f functie en voert deze vervolgens uit met alle argumenten die u aan de alias doorgeeft. Dus git ignore .tmp/ zou .tmp/ aan je .gitignore bestand toevoegen.

In feite is dit patroon zo handig dat Git $1 , $2 , etc. variabelen voor je definieert, zodat je er niet eens een speciale functie voor hoeft te definiëren. (Maar onthoud dat Git de argumenten hoe dan ook zal toevoegen, zelfs als je er toegang toe hebt via deze variabelen, dus misschien wil je een dummy-commando aan het einde toevoegen.)

Merk op dat aliassen voorafgegaan worden door ! op deze manier worden uitgevoerd vanuit de root directory van je git checkout, zelfs als je huidige directory dieper in de boom zit. Dit kan een handige manier zijn om een opdracht vanaf de root uit te voeren zonder dat je daar expliciet naar moet cd .

[alias]
    ignore = "! echo $1 >> .gitignore"

Negeer bijgehouden bestanden tijdelijk

Typ het volgende als u een bestand tijdelijk als genegeerd wilt markeren (geef bestand als parameter door aan alias):

unwatch = update-index --assume-unchanged

Typ het volgende om het trackingbestand opnieuw te starten:

watch = update-index --no-assume-unchanged

Typ het volgende om alle bestanden weer te geven die tijdelijk zijn genegeerd:

unwatched = "!git ls-files -v | grep '^[[:lower:]]'"

Typ het volgende om de niet-gepaarde lijst te wissen:

watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"

Voorbeeld van het gebruik van de aliassen:

git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall

Toon mooi logboek met takgrafiek

[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'

Hier een uitleg van de opties en placeholder die worden gebruikt in het --pretty formaat (uitgebreide lijst is beschikbaar met git help log )

--graph - teken de commit boom

--date-order - gebruik indien mogelijk de tijdstempel van commit

--eerste-ouder - volg alleen de eerste ouder op samenvoegknooppunt.

--branches - toon alle lokale filialen (standaard wordt alleen de huidige filiaal getoond)

--all - toon alle lokale en afstandsbedieningen

% h - hashwaarde voor commit (afgekort)

% ad - Datumstempel (auteur)

% an - Auteur gebruikersnaam

% an - Commit gebruikersnaam

% C (automatisch) - om kleuren te gebruiken die zijn gedefinieerd in de sectie [kleur]

% Creset - om de kleur opnieuw in te stellen

% d - --decorate (filiaal- en tagnamen)

% s - bericht vastleggen

% ad - auteur datum (volgt - datum richtlijn) (en geen commiter datum)

% an - auteurnaam (kan% cn zijn voor commiternaam)

Code bijwerken met behoud van een lineaire geschiedenis

Soms moet je een lineaire (niet-vertakkende) geschiedenis bijhouden van je code commits. Als je een tijdje aan een branch werkt, kan dit lastig zijn als je een regelmatige git pull omdat dat een samenvoeging met stroomopwaarts zal opnemen.

[alias]
  up = pull --rebase

Dit wordt bijgewerkt met je upstream-bron en past vervolgens elk werk dat je niet hebt gedaan bovenop alles toe wat je naar beneden hebt gehaald.

Gebruiken:

git up

Bekijk welke bestanden door uw .gitignore-configuratie worden genegeerd

[ alias ]

    ignored = ! git ls-files --others --ignored --exclude-standard --directory \
            && git ls-files --others -i --exclude-standard

Toont één regel per bestand, dus u kunt grep (alleen mappen):

$ git ignored | grep '/$'
.yardoc/
doc/

Of tel:

~$ git ignored | wc -l
199811                 # oops, my home directory is getting crowded

Unstage geënsceneerde bestanden

Normaal gesproken, om bestanden te verwijderen die geënsceneerd zijn om te worden vastgelegd met de git reset commit, heeft reset veel functies afhankelijk van de argumenten die eraan worden gegeven. Om alle geënsceneerde bestanden volledig onstage te maken, kunnen we gebruik maken van git-aliassen om een nieuwe alias te maken die reset gebruikt, maar nu hoeven we niet te onthouden om de juiste argumenten te geven om te reset .

git config --global alias.unstage "reset --"

Nu, wanneer je stadia van bestanden wilt unstagen , typ je git unstage en je bent git unstage om te gaan.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow