web-dev-qa-db-fra.com

Comment puis-je aliaser les commandes dans git?

J'ai vu un screencast où quelqu'un avait eu 

git st
git ci

travailler. Lorsque je le fais, je reçois une erreur en me demandant si je voulais dire autre chose.
Étant un git newb, j'ai besoin de savoir ce que vous devez faire pour y arriver

531
DevelopingChris

En gros, il vous suffit d’ajouter des lignes à ~/.gitconfig

[alias]
    st = status
    ci = commit -v

Ou vous pouvez utiliser la commande git config alias:

$ git config --global alias.st status 

Sous Unix, utilisez des guillemets simples si l'alias a un espace:

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

Sous Windows, utilisez les guillemets doubles si l'alias a un espace ou un argument de ligne de commande

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

La commande alias accepte même les fonctions en tant que paramètres. Jetez un coup d'œil à aliases .

832
Diego Dias

Comme d'autres l'ont déjà dit, la manière appropriée d'ajouter des alias git est dans votre fichier global .gitconfig, soit en éditant ~/.gitconfig, soit en utilisant la commande git config --global alias.<alias> <git-command>.

Vous trouverez ci-dessous une copie de la section alias de mon fichier ~/.gitconfig:

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

De plus, si vous utilisez bash, je vous conseillerais de configurer la complétion de bash en copiant git-completion.bash dans votre répertoire personnel et en le recherchant à partir de votre ~/.bashrc. (Je crois que le livre en ligne Pro Git l'a appris.) Sous Mac OS X, j'ai accompli ceci à l'aide des commandes suivantes:

# 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

Remarque: L’achèvement de bash fonctionnera non seulement pour les commandes git standard, mais également pour vos alias git.

Enfin, pour vraiment réduire le nombre de frappes au clavier, j’ai ajouté ce qui suit à mon fichier ~/.bash_aliases, qui provient de ~/.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'
153
Matthew Rankin

Je pense que le plus utile de gitconfig est le suivant: nous utilisons toujours la fonction 20% dans git, vous pouvez essayer le "g ll", c’est incroyable, les détails:

[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
58
wcc526

Vous avez besoin de la commande git config alias. Exécutez les tâches suivantes dans un référentiel Git:

git config alias.ci commit

Pour un alias global:

git config --global alias.ci commit
16
Alan Haggai Alavi

Cela a fonctionné pour moi:

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

sur:

$ git --version

git version 1.7.7.5 (Apple Git-26)
7
Nicolas Gramlich

Cela créera un alias st pour status:

git config --add alias.st status

7
Nick Moore

Vous pouvez alias les commandes git et non-git. Il semble que cela ait été ajouté à la version 1.5. Un extrait de la page git config --help sur la version 2.5.4 sur mon Mac indique:

Si le développement de l'alias est précédé d'un point d'exclamation, il sera traité comme une commande Shell.

Par exemple, dans votre fichier global .gitconfig, vous pourriez avoir:

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

Et puis lancez-les:

$ git hi
hello
$ git st
On branch master

...
6
mkobit

Vous trouverez ci-dessous les 4 raccourcis git ou alias que vous pouvez utiliser pour gagner du temps.

Ouvrez la ligne de commande et tapez ces 4 commandes ci-dessous et utilisez les raccourcis suivants.

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

Maintenant testez-les!

$ 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
5
Prabhakar
$ git update 
 git: 'update' n'est pas une commande de git. Voir 'git --help' .

 Vouliez-vous dire cela? 
 update-ref 

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

 $ git update 
 De git: //git.kernel.org/pub/scm/ git/git 
 = [à jour] html -> Origin/html 
 = [à jour] maint -> Origine/maint 
 = [à jour] man -> Origine/man 
 = [à jour] master -> Origin/master 
 = [à jour] suivant -> Origine/suivant 
 = [à jour] pu -> origine/pu 
 = [à jour] todo -> Origine/todo 
 Déjà à jour.
4
Greg Bacon

Pour ceux qui cherchent à exécuter des commandes Shell dans un alias git}, par exemple:

$ git pof

Dans mon terminal, Push forcera la branche actuelle sur mon dépôt d'origine:

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

Où le 

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

la commande retourne la branche courante.

C'est donc un raccourci pour taper manuellement le nom de la branche:

git Push Origin -f <current-branch>
3
Gus

Vous pouvez définir des alias git personnalisés à l'aide de la configuration de git. Voici la syntaxe:

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

Par exemple, si vous avez besoin d'un alias pour afficher une liste des fichiers en conflit de fusion, exécutez:

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

Maintenant, vous pouvez utiliser la commande ci-dessus uniquement en utilisant "conflits":

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

Juste pour obtenir des alias encore plus courts que le moyen standard de configuration git mentionné dans d’autres réponses, j’ai créé un paquet npm mingit (npm install -g mingit) afin que la plupart des commandes deviennent deux caractères au lieu de deux. Voici les exemples:

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

et d'autres commandes seraient pareillement courtes. Cela permet également de compléter les bash. Le paquet ajoute une fonction bash à vos fichiers de points, fonctionne sur osx, linux et windows. De plus, contrairement aux autres alias, il alias git -> g ainsi que le deuxième paramètre.

2
ironicaldiction

Ajoutez les lignes suivantes à votre ~/.gitconfig dans votre répertoire personnel

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

Une fois que cela est fait, vous pouvez faire git a au lieu de git add par exemple. La même chose s'applique aux autres commandes sous l'en-tête alias.

1
Stryker

Il est donné ici Alias ​​ . Même s'il y a d'excellentes réponses ici, j'ai ajouté ceci parce que Il diffère dans windows et linux

1
madhu131313

J'ai créé l'alias dog pour afficher le graphique de journal:

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

Et utilisez-le comme suit:

 git dog
1

Vous pouvez également chaîner les commandes si vous utilisez le caractère "!" opérateur pour générer un shell:

aa = !git add -A && git status

Ceci ajoutera tous les fichiers et vous donnera un rapport d’état avec $ git aa.

Pour un moyen pratique de vérifier vos alias, ajoutez cet alias:

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

Ensuite, un $ git alias rapide vous indique vos alias actuels et leur rôle.

1
Joseph Cheek

Pour moi (j'utilise mac avec terminal) n'a fonctionné que lorsque j'ai ajouté sur .bash_profile et ouvert un autre onglet pour charger le changement:

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"
0
Marina

Si vous souhaitez une alternative à l'option ~/.gitconfig et que vous souhaitez en creuser un peu plus, une autre option consiste à écrire des commandes git entièrement personnalisées en les enveloppant dans un package de nœud global. 

Dans votre package.json, vous définissez la commande racine (exemple: gt), puis vous filtrez les commandes spécifiques pour exécuter les commandes git correctes. Par exemple, git checkout my-branch pourrait être gt co mybranch.

Le paquet "christian-git" sur npm utilise cette méthode: https://github.com/alexmacarthur/christian-git

0
Alex MacArthur

Une autre possibilité pour Windows serait d’avoir un répertoire rempli de fichiers .bat contenant vos raccourcis. Le nom du fichier est le raccourci à utiliser. Ajoutez simplement le répertoire à votre variable d’environnement PATH et vous aurez tous les raccourcis à votre disposition dans la fenêtre de commande.

Par exemple (gc.bat):

git commit -m %1

Ensuite, vous pouvez exécuter la commande suivante dans la console:

gc "changed stuff"

La raison pour laquelle j'ajoute ceci comme réponse est parce que lorsque vous utilisez ceci, vous n'êtes pas limité à git ... uniquement les commandes.

0
Rick van Osta

Capture d'écran PFA de mon fichier .gitconfig

avec les alias ci-dessous

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