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 vangit commit
, -
git st
plaats vangit status
, -
git co
plaats vangit 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.