2010-03-31 9 views
443

Ho visto uno screencast in cui qualcuno aveva ottenutoCome faccio ad alias i comandi in git?

git st 
git ci 

a lavorare. Quando lo faccio ricevo un errore che mi chiede se intendo qualcos'altro.
Essendo un git newb, ho bisogno di sapere cosa devi fare per ottenere questo risultato?

+0

Inoltre potrai vedere qui https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases – JayRizzo

risposta

702

Fondamentalmente è solo bisogno di aggiungere linee di ~/.gitconfig

[alias] 
    st = status 
    ci = commit -v 

oppure è possibile utilizzare il comando git config alias:

$ git config --global alias.st status 

On Unix, utilizzare singoli apici se l'alias ha uno spazio:

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

su Windows, utilizzare le virgolette doppie se l'alias ha uno spazio o una riga di comando argume nt:

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

Il comando alias accetta anche funzioni come parametri. Dai uno sguardo allo aliases.

+69

Consiglio vivamente di utilizzare 'git config --global' per posizionare gli alias in ~ ~/.gitconfig' invece di' .git/config' per il repository attuale. – Cascabel

+3

Sono d'accordo! ... Modificherò la mia risposta –

+22

Preferisco le impostazioni 'st' a' status -s' (stato breve) – hasen

7

Questo creerà un alias st per status:

git config --add alias.st status

+0

Mi serviva il - aggiungi e usa le virgolette doppie, non le virgolette singole – Aligned

+0

Perché 'git st' quando puoi usare' git s', sbarazzati di 's': P – Abdullah

16

è necessario il comando di git config alias. Eseguire il seguente in un repository Git:

git config alias.ci commit 

Per alias globale:

git config --global alias.ci commit 
4
$ git update 
git: 'update' is not a git command. See 'git --help'. 

Did you mean this? 
    update-ref 

$ git config --global alias.update 'pull -v' 

$ git update 
From git://git.kernel.org/pub/scm/git/git 
= [up to date]  html  -> origin/html 
= [up to date]  maint  -> origin/maint 
= [up to date]  man  -> origin/man 
= [up to date]  master  -> origin/master 
= [up to date]  next  -> origin/next 
= [up to date]  pu   -> origin/pu 
= [up to date]  todo  -> origin/todo 
Already up-to-date.
138

Come altri hanno detto il modo appropriato per aggiungere alias Git è nel file globale .gitconfig sia modificando ~/.gitconfig oppure utilizzando il comando git config --global alias.<alias> <git-command>

Di seguito è riportata una copia della sezione alias del file ~/.gitconfig:

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

Inoltre, se si sta utilizzando bash, mi sento di raccomandare la creazione di completamento bash copiando git-completion.bash alla vostra home directory e di sourcing dal vostro ~/.bashrc. (. Credo che ho imparato a conoscere questo dal libro on-line Pro Git) In Mac OS X, ho realizzato questo con i seguenti comandi:

# 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 

Nota: Il completamento bash funziona non solo per i comandi standard git ma anche per i tuoi alias git.

Infine, per ridurre davvero giù sui tasti, ho aggiunto il seguente al mio ~/.bash_aliases file, che proviene dalla ~/.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' 
+2

Per linux, ho fatto questo per ottenere il file git-completion.bash : https://blogs.oracle.com/linuxnstuff/entry/recommended_git-completionbash –

+0

awesome thanks @Matthew Rankin –

+8

Se usi zsh, l'eccellente suite oh-my-zsh contiene un plugin con tutti quegli alias git "standard" - https://github.com/robbyrussell/oh-my-zsh/blob/ master/plugins/git/git.plugin.zsh - per bash, dai un'occhiata a https://github.com/revans/bash-it – jobwat

7

Questo ha funzionato per me:

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

on:

$ git --version 

git version 1.7.7.5 (Apple Git-26) 
+1

si potrebbe anche fare: git config - alias.bco globale 'checkout -b'. Quindi potresti fare: git bco new-branch. :) – Russell

+3

Mi piace 'git cob'. mi ricorda l'estate, come nel pannocchia. in realtà una bella parola non pensiamo abbastanza ... cob che è –

+3

Nel caso questa sia la prima volta che qualcuno diverso da me ha visto un comando git alias che inizia con '!', nota che 'Dalla versione 1.5.0, Git supporta alias che eseguono comandi non-git, anteponendo il valore con "!" '([Ref] (https://git.wiki.kernel.org/index.php/Aliases#Advanced)) – Sam

1

Viene indicato qui Aliases. Anche lì sono grandi risposte qui, ho aggiunto questo perché differisce in windows e linux

47

Penso che il gitconfig più utile sia così, usiamo sempre la funzione del 20% in git, puoi provare il "g ll", è incredibile, i dettagli:

[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 
+0

come si imposta questo su? cosa metti dove farlo così? – ahnbizcad

+1

@ahnbizcad Inserire in ~/.gitconfig se si git config --global altrimenti va in .git/config del repository corrente – Jared

5

follwing sono i 4 tasti di scelta rapida git o alias youc un uso per risparmiare tempo.

Aprire la riga di comando e digitare questi sotto 4 comandi e utilizzare le scorciatoie dopo.

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

Ora provali!

$ 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 
2

Solo per ottenere gli alias ancora più breve rispetto al modo git configurazione standard di detto in altre risposte, ho creato un pacchetto di NPM mingit (npm install -g mingit) in modo che la maggior parte dei comandi diventerebbero 2 caratteri invece di 2 parole. Ecco gli esempi:

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 

e altri comandi sarebbero ugualmente brevi. Questo mantiene anche i completamenti di bash. Il pacchetto aggiunge una funzione bash ai tuoi dotfile, funziona su osx, linux e windows. Inoltre, a differenza degli altri alias, è alias git ->g e al secondo parametro.

+1

Grazie per aver creato il progetto github. –

5

È possibile eseguire alias sia i comandi git che quelli non git. Sembra che questo sia stato aggiunto nella versione 1.5. Un frammento della pagina git config --help sulla versione 2.5.4 sul mio Mac mostra:

If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command.

Ad esempio, nel file globale .gitconfig si potrebbe avere:

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

E poi eseguirli:

$ git hi 
hello 
$ git st 
On branch master 

... 
1

Puoi anche concatenare i comandi se usi "!" all'operatore di generare una shell:

aa = !git add -A && git status 

Questo sia aggiungere tutti i file e vi darò un rapporto di stato con $ git aa.

Per un modo pratico per controllare i alias, aggiungere questo alias:

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

Poi un rapido $ git alias ti dà gli alias correnti e quello che fanno.

0

Un'altra possibilità per Windows sarebbe quella di avere una directory piena di file .bat con le scorciatoie. Il nome del file è la scorciatoia da utilizzare. Basta aggiungere la directory alla variabile d'ambiente PATH e hai tutte le scorciatoie a disposizione nella finestra di cmd.

Per esempio (gc.bat):

git commit -m %1 

Quindi è possibile eseguire il seguente comando nella console:

gc "changed stuff" 

La ragione per cui sto aggiungendo questo come una risposta è perché quando utilizzando questo non sei limitato ai soli comandi git ....

3

Per coloro che desiderano eseguire comandi shell in un alias git, ad esempio:

$ git pof 

Nella mia terminale forza di spinta ramo corrente al mio origine repo:

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

Dove

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

restituisce il ramo corrente.

Quindi questa è una scorciatoia per digitare manualmente il nome del ramo:

git push origin -f <current-branch> 
0

Se si desidera un'alternativa all'opzione ~/.gitconfig e aperto a scavare un po 'più, un'altra opzione è quella di scrivere i comandi del tutto Git personalizzato avvolgendoli in un pacchetto di nodi globale.

Nel pacchetto package.json, è necessario definire il comando root (esempio: gt), quindi filtrare i comandi specifici per eseguire i comandi git corretti. Ad esempio, git checkout my-branch potrebbe essere gt co mybranch.

Il pacchetto "christian-git" su NPM utilizza questo metodo: https://github.com/alexmacarthur/christian-git

Problemi correlati