Hoe alias ik commando’s in git?

Ik heb een screencast gezien waarin iemand het had gekregen

git st
git ci

om te werken. Als ik dit doe, krijg ik een foutmelding met de vraag of ik iets anders bedoelde.
Omdat ik een git newb ben, moet ik weten wat je moet doen om dit voor elkaar te krijgen?


Antwoord 1, autoriteit 100%

In principe hoef je alleen maar regels toe te voegen aan ~/.gitconfig

[alias]
    st = status
    ci = commit -v

Of je kunt het git config alias commando gebruiken:

$ git config --global alias.st status 

Gebruik op Unix enkele aanhalingstekens als de alias een spatie heeft:

$ git config --global alias.ci 'commit -v'

Gebruik in vensters dubbele aanhalingstekens als de alias een spatie of een opdrachtregelargument heeft:

c:\dev> git config --global alias.ci "commit -v"

Het alias-commando accepteert zelfs functies als parameters. Bekijk aliassen.


Antwoord 2, autoriteit 18%

Zoals anderen al hebben gezegd, is de juiste manier om git-aliassen toe te voegen in je algemene .gitconfig-bestand, ofwel door ~/.gitconfigte bewerken of door de git config --global alias.<alias> <git-command>commando

Hieronder staat een kopie van het aliasgedeelte van mijn ~/.gitconfig-bestand:

[alias]
    st = status
    ci = commit
    co = checkout
    br = branch
    unstage = reset HEAD --
    last = log -1 HEAD

Als je bash gebruikt, raad ik je aan om bash-completering in te stellen door git-completion.bashnaar je homedirectory te kopiëren en het uit je ~/.bashrc. (Ik geloof dat ik dit heb geleerd uit het online boek Pro Git.) Op Mac OS X , heb ik dit bereikt met de volgende opdrachten:

# Copy git-completion.bash to home directory
cp usr/local/git/contrib/completion/git-completion.bash ~/
# Add the following lines to ~/.bashrc
if [ -x /usr/local/git/bin/git ]; then
    source ~/.git-completion.bash
fi

Opmerking:De bash-aanvulling werkt niet alleen voor de standaard git-commando’s, maar ook voor je git-aliassen.

Tot slot, om het aantal toetsaanslagen echt te verminderen, heb ik het volgende toegevoegd aan mijn ~/.bash_aliases-bestand, dat afkomstig is van ~/.bashrc:

alias gst='git status'
alias gl='git pull'
alias gp='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'

Antwoord 3, autoriteit 7%

Ik denk dat de meest bruikbare gitconfig zo is, we gebruiken altijd de 20%-functie in git, je kunt de “g ll” proberen, het is verbazingwekkend, de details:

[user]
    name = my name
    email = [email protected]
[core]  
    editor = vi 
[alias]
    aa = add --all
    bv = branch -vv
    ba = branch -ra
    bd = branch -d
    ca = commit --amend
    cb = checkout -b
    cm = commit -a --amend -C HEAD
    ci = commit -a -v
    co = checkout
    di = diff
    ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
    ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
    ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
    mm = merge --no-ff
    st = status --short --branch
    tg = tag -a 
    pu = push --tags
    un = reset --hard HEAD  
    uh = reset --hard HEAD^
   [color]  
    diff = auto  
    status = auto  
    branch = auto 
   [branch]  
    autosetuprebase = always

Antwoord 4, autoriteit 2%

Je hebt het git config aliascommando nodig. Voer het volgende uit in een Git-repository:

git config alias.ci commit

Voor wereldwijde alias:

git config --global alias.ci commit

Antwoord 5

Dit werkte voor mij:

bco = "!f(){ git branch ${1} && git checkout ${1}; };f"

op:

$ git --version
git version 1.7.7.5 (Apple Git-26)

Antwoord 6

Hierna volgen de 4 git-snelkoppelingen of aliassen die u kunt gebruiken om tijd te besparen.

Open de commandoregel en typ deze onderstaande 4 commando’s en gebruik daarna de sneltoetsen.

git config --global alias.co checkout  
git config --global alias.ci commit    
git config --global alias.st status    
git config --global alias.br branch  

Test ze nu!

$ git co              # use git co instead of git checkout
$ git ci              # use git ci instead of git commit
$ git st              # use git st instead of git status
$ git br              # use git br instead of git branch

Antwoord 7

Voor mij (Ik gebruik mac met terminal) werkte alleen toen ik .bash_profiletoevoegde en een ander tabblad opende om de wijziging te laden:

alias gst="git status"
alias gd="git diff"
alias gl="git log"
alias gco="git commit"
alias gck="git checkout"
alias gl="git pull"
alias gpom="git pull origin master"
alias gp="git push"
alias gb="git branch"

Antwoord 8

Hiermee wordt een alias stgemaakt voor status:

git config --add alias.st status


Antwoord 9

Voor degenen die shell-commando’s willen uitvoeren in een git-alias, bijvoorbeeld:

$ git pof

In mijn terminal zal de huidige vertakking duwennaar mijn oorspronkelijke repo:

[alias]
    pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)

Waar de

$(git branch | grep \\* | cut -d ' ' -f2)

opdracht geeft de huidige tak terug.

Dit is dus een snelkoppeling voor het handmatig typen van de filiaalnaam:

git push origin -f <current-branch>

Antwoord 10

Ik heb de alias doggemaakt om de loggrafiek weer te geven:

git config --global alias.dog "log --all --decorate --oneline --graph"

En gebruik het als volgt:

git dog

Antwoord 11

Je kunt ook kettingcommando’s gebruiken als je de ‘!’ operator om een ​​shell te spawnen:

aa = !git add -A && git status

Hiermee worden alle bestanden toegevoegd en krijg je een statusrapport met $ git aa.

Voor een handige manier om uw aliassen te controleren, voegt u deze alias toe:

alias = config --get-regexp ^alias\\.

Vervolgens geeft een snelle $ git aliasje je huidige aliassen en wat ze doen.


Antwoord 12

Voeg de volgende regels toe aan je ~/.gitconfig in je home directory

[alias]
# one-line log
l = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose
d = diff
ds = diff --stat
dc = diff --cached
s = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"
# list aliases
la = "!git config -l | grep alias | cut -c 7-"

Als dat eenmaal gedaan is, kun je bijvoorbeeld git adoen in plaats van git add. Hetzelfde geldt voor andere commando’s onder de aliaskop..


Antwoord 13

Je kunt zowel git- als non-git-opdrachten een alias geven. Het lijkt erop dat dit in versie 1.5 is toegevoegd. Een fragment van de git config --helppagina op versie 2.5.4 op mijn Mac toont:

Als de alias-uitbreiding wordt voorafgegaan door een uitroepteken, wordt deze behandeld als een shell-opdracht.

In uw algemene .gitconfig-bestand zou u bijvoorbeeld het volgende kunnen hebben:

[alias]
    st = status
    hi = !echo 'hello'

En voer ze dan uit:

$ git hi
hello
$ git st
On branch master
...

Antwoord 14

$ git-update
git: 'update' is geen git-commando. Zie 'git --help'.
Bedoelde je dit?
  update-ref
$ git config --global alias.update 'pull -v'
$ git-update
Van git://git.kernel.org/pub/scm/git/git
 = [up-to-date] html -> oorsprong/html
 = [up-to-date] onderhoud -> herkomst/onderhoud
 = [up-to-date] man -> herkomst/man
 = [up-to-date] master -> herkomst/meester
 = [up-to-date] volgende -> herkomst/volgende
 = [up-to-date] pu -> oorsprong/pu
 = [up-to-date] todo -> oorsprong/todo
Al up-to-date.

Antwoord 15

Je kunt aangepaste git-aliassen instellen met behulp van git’s config. Dit is de syntaxis:

git config --global alias.<aliasName> "<git command>"

Als u bijvoorbeeld een alias nodig heeft om een ​​lijst met bestanden met samenvoegconflicten weer te geven, voert u het volgende uit:

git config --global alias.conflicts "diff --name-only --diff-filter=U"

Nu kunt u de bovenstaande opdracht alleen gebruiken met “conflicten”:

git conflicts
# same as running: git diff --name-only --diff-filter=U

Antwoord 16

Opstelling met één regel

$ git config --global alias.co checkout && git config --global alias.br branch && git config --global alias.ci commit && git config --global alias.st status && git config --global alias.unstage 'reset HEAD --' && git config --global alias.last 'log -1 HEAD'

Gebruik:

$ git st
$ git co
$ git br
$ git ci
$ git last
$ git unstage <file | dir>

Alles zal veranderen in:

$ cat ~/.gitconfig
[user]
    name = Sample User
    email = [email protected]
[core]
    filemode = false
    compression = 1
    quotepath = off
    ignorecase = false
[color]
    ui = auto
[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
    last = log -1 HEAD
    unstage = reset HEAD --

Hoop dat dit sneller gaat.


Antwoord 17

Om de aliassen nog korter te maken dan de standaard git config-manier die in andere antwoorden wordt genoemd, heb ik een npm-pakket gemaakt mingit (npm install -g mingit) zodat de meeste commando’s 2 karakters zouden worden in plaats van 2 woorden. Dit zijn de voorbeelden:

g a .                   // git add .
g b other-branch        // git branch other-branch
g c "made some changes" // git commit -m "made some changes"
g co master             // git checkout master
g d                     // git diff
g f                     // git fetch
g i                     // git init 
g m hotfix              // git merge hotfix
g pll                   // git pull
g psh                   // git push
g s                     // git status

en andere commando’s zijn even kort. Dit houdt ook bash-aanvullingen bij. Het pakket voegt een bash-functie toe aan je dotfiles, werkt op osx, linux en windows. Ook, in tegenstelling tot de andere aliassen, aliasen het git-> gevenals de tweede parameter.


Antwoord 18

Als je een alternatief wilt voor de optie ~/.gitconfigen je wilt er wat meer induiken, dan is een andere optie om volledig aangepaste git-commando’s te schrijven door ze in een globaal node-pakket te verpakken.

In uw package.json definieert u het root-commando (voorbeeld: gt), en filtert u vervolgens de specifieke commando’s om de juiste git-commando’s uit te voeren. git checkout my-branchkan bijvoorbeeld gt co mybranchzijn.

Het “christian-git”-pakket op npm gebruikt deze methode: https://github.com/ alexmacarthur/christian-git


Antwoord 19

Meerdere aliasbestanden opnemen in uw .gitconfig

Ik raad aan om een ​​.gitconfigincludevoor uw aliassen. Zodra u begint met het maken van aliassen, krijgt u er waarschijnlijk veel van. Ze zullen waarschijnlijk iets zijn dat u met anderen wilt delen. Door ze in een speciaal bestand te plaatsen, kunt u ze gemakkelijk delen. Je team kan zelfs een git-repo gebruiken om gedeelde aliassen te bewaren. En natuurlijk wil je sommige aliassen niet delen, dus bewaar ze in een privé-aliasbestand.

[include]
    path=src/dotfiles/.gitaliases
[include]
    path=src/team-utils/gitaliases
[include]
    path=.gitaliases.private

Antwoord 20

Gebruik de volgende commando’s om een ​​alias in Git te maken:

git config --local alias.s status
git config --local alias.c commit
git s
On branch master
nothing to commit, working tree clean

git status
On branch master
nothing to commit, working tree clean

Antwoord 21

Het wordt hier gegeven aliassen. Zelfs als er geweldige antwoorden zijn, heb ik dit toegevoegd omdat
het verschilt in Windows en Linux


Antwoord 22

PFA-screenshot van mijn .gitconfig-bestand

met de onderstaande aliassen

[alias]
    cb = checkout branch
    pullb = pull main branch

Antwoord 23

Ik heb alle opdrachten voor aliassen toegevoegd aan .profile in de gebruikersmap ( vim ~/.profile).

alias gs='git status'
alias gp='git pull'
alias gph='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -m'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'
alias gfo='git fetch origin'

Vervolgens heb ik het broncommando in bash en zsh shell toegevoegd.

In bash-shell ( vim ~/.bashrc)

source ~/.profile

In zsh-shell ( vim ~/.zshrc )

source ~/.profile

Antwoord 24

alias s="git status"

Je wijsvinger zal je vergeven voor alle pijn die je hem je hele leven hebt bezorgd.


Antwoord 25

Een andere mogelijkheid voor Windows zou zijn om een ​​map gevuld met .bat-bestanden te hebben die uw snelkoppelingen bevatten. De naam van het bestand is de snelkoppeling die moet worden gebruikt. Voeg gewoon de map toe aan je PATH-omgevingsvariabele en je hebt alle snelkoppelingen tot je beschikking in het cmd-venster.

Bijvoorbeeld (gc.bat):

git commit -m %1

Vervolgens kunt u de volgende opdracht in de console uitvoeren:

gc "changed stuff"

De reden dat ik dit als antwoord toevoeg, is omdat je bij gebruik niet beperkt bent tot alleen git ...commando’s.

Other episodes