Recherche…


Alias ​​simples

Il existe deux manières de créer des alias dans Git:

  • avec le fichier ~/.gitconfig :
[alias]
    ci = commit
    st = status
    co = checkout
  • avec la ligne de commande:
 git config --global alias.ci "commit"
 git config --global alias.st "status"
 git config --global alias.co "checkout"

Une fois l'alias créé, tapez:

  • git ci au lieu de git commit ,
  • git st au lieu de git status ,
  • git co au lieu de git checkout .

Comme pour les commandes git standard, les alias peuvent être utilisés à côté des arguments. Par exemple:

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

List / search aliases existants

Vous pouvez lister les alias git existants en utilisant --get-regexp :

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

Recherche d'alias

Pour rechercher des alias , ajoutez ce qui suit à votre .gitconfig sous [alias] :

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

Ensuite vous pouvez:

  • git aliases - affiche TOUS les alias
  • git aliases commit - uniquement les alias contenant "commit"

Alias ​​avancés

Git vous permet d'utiliser des commandes non-git et une syntaxe sh shell complète dans vos alias si vous les préfixez avec ! .

Dans votre fichier ~/.gitconfig :

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

Le fait que la syntaxe complète du shell soit disponible dans ces alias préfixés signifie également que vous pouvez utiliser des fonctions shell pour construire des alias plus complexes, tels que ceux qui utilisent des arguments de ligne de commande:

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

L'alias ci-dessus définit la fonction f , puis l'exécute avec tous les arguments que vous transmettez à l'alias. Donc, lancer git ignore .tmp/ ajouterait .tmp/ à votre fichier .gitignore .

En fait, ce modèle est si utile que Git définit pour vous les variables $1 , $2 , etc., vous n'avez donc même pas besoin de définir une fonction spéciale. (Mais gardez à l'esprit que Git ajoutera également les arguments de toute façon, même si vous y accédez via ces variables, vous pouvez donc ajouter une commande factice à la fin.)

Notez que les alias avec le préfixe avec ! De cette façon, ils sont exécutés à partir du répertoire racine de votre commande git, même si votre répertoire actuel est plus profond dans l'arborescence. Cela peut être un moyen utile d'exécuter une commande à partir de la racine sans avoir à y cd explicitement.

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

Ignorer temporairement les fichiers suivis

Pour marquer temporairement un fichier comme ignoré (fichier pass comme paramètre pour alias) - tapez:

unwatch = update-index --assume-unchanged

Pour recommencer le suivi du fichier - tapez:

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

Pour répertorier tous les fichiers temporairement ignorés - tapez:

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

Pour effacer la liste non surveillée - tapez:

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

Exemple d'utilisation des alias:

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

Afficher un joli journal avec un graphique de branche

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

Voici une explication des options et des espaces réservés utilisés dans le format --pretty (une liste exhaustive est disponible avec le git help log )

--graph - dessine l'arbre de validation

--date-order - utilise l'ordre d'horodatage de validation lorsque cela est possible

--first-parent - ne suit que le premier parent du noeud de fusion.

--branches - affiche toutes les branches locales (par défaut, seule la branche actuelle est affichée)

--all - affiche toutes les branches locales et distantes

% h - valeur de hachage pour commit (abrégé)

% ad - Cachet de date (auteur)

% an - Nom d'utilisateur auteur

% an - Nom d'utilisateur de validation

% C (auto) - pour utiliser les couleurs définies dans la section [color]

% Creset - pour réinitialiser la couleur

% d - --decorate (noms de branches et de tags)

% s - valide le message

% ad - date de l'auteur (suivra la directive --date) (et non la date du commiter)

% an - nom de l'auteur (peut être% cn pour le nom du commutateur)

Mise à jour du code tout en conservant un historique linéaire

Parfois, vous devez conserver un historique linéaire (sans branchement) de vos commits de code. Si vous travaillez sur une branche pendant un certain temps, cela peut être difficile si vous devez effectuer une git pull régulière de git pull car cela enregistrera une fusion avec l’amont.

[alias]
  up = pull --rebase

Cela mettra à jour avec votre source en amont, puis réappliquera tout travail que vous n'avez pas poussé au-dessus de ce que vous avez abattu.

Utiliser:

git up

Voir quels fichiers sont ignorés par votre configuration .gitignore

[ alias ]

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

Affiche une ligne par fichier, vous pouvez donc grep (uniquement les répertoires):

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

Ou compte:

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

Dégager les fichiers mis en scène

Normalement, pour supprimer les fichiers à transférer à l'aide de la validation de git reset , la reset a beaucoup de fonctions en fonction des arguments fournis. Pour désinstaller complètement tous les fichiers mis en scène, nous pouvons utiliser des alias git pour créer un nouvel alias qui utilise la reset mais nous n'avons plus besoin de nous souvenir de fournir les arguments corrects à reset .

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

Maintenant, chaque fois que vous voulez désinstaller des fichiers de scène, tapez git unstage et vous êtes git unstage à partir.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow