Alias et terminal

Il est possible de mettre en place des alias de commandes git en éditant soit ~/.gitconfig soit .git/config dans le dossier du projet

[alias]
    lg = log -20 --graph --oneline --decorate
    st = status
    co = checkout
    ca = commit -a
    re = remote -v
    br = branch -vv
    bra = branch -avv
    ms = merge --squash
    up = pull --all
    cl = gc --prune=now
    alias = "!git config -l | grep alias"
    prod = "!git pull && git checkout master && git pull && git merge dev && git push && git checkout dev"
    preprod = "!git pull && git checkout preprod && git pull && git merge dev && git push && git checkout dev"
    info = "!git config --get remote.origin.url"

Afficher la branche courante dans le terminal

Pour afficher la branche courante dans le terminal, ajouter les lignes suivantes dans le fichier ~/.bashrc :

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[\033[1m\]\[\033[32m\]\u@\h\[\033[39m\]:\[\033[34m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

Générer les messages de commit avec ChatGPT

Installer le package jq

sudo apt install jq

Puis ajouter la clé d'API OpenAI dans le fichier ~/.profile

export OPENAI_API_KEY="......"

Prendre en compte le fichier ~/.profile

source ~/.profile

Puis ajouter le contenu suivant dans un fichier ~/bin/cia (Commit IA)

#!/bin/bash
 
# Vérification de la présence de la clé API OpenAI dans les variables d'environnement
if [ -z "$OPENAI_API_KEY" ]; then
    echo "Erreur: La variable d'environnement OPENAI_API_KEY n'est pas définie"
    exit 1
fi
 
# Récupération du git diff
DIFF=$(git diff --staged)
 
if [ -z "$DIFF" ]; then
    echo "Aucun changement n'a été mis en staging. Utilisez 'git add' pour ajouter des fichiers."
    exit 1
fi
 
# Construction du JSON pour l'API
JSON_DATA=$(jq -n \
  --arg system "Tu es un assistant spécialisé dans la génération de messages de commit Git clairs et concis." \
  --arg prompt "En tant qu'expert Git, génère un message de commit concis et descriptif pour les changements suivants. Le message doit suivre les conventions de commit conventionnel (feat, fix, etc.) et ne pas dépasser 72 caractères pour la première ligne, suivie d'une ligne vide, puis une liste des modifications plus détaillée. Voici le diff:" \
  --arg diff "$DIFF" \
  --arg temperature "0.7" '
  {
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": $system
      },
      {
        "role": "user",
        "content": ($prompt + "\n\n" + $diff)
      }
    ],
    "temperature": ($temperature | tonumber)
  }
')
 
# Appel à l'API OpenAI
RESPONSE=$(curl -s https://api.openai.com/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d "$JSON_DATA")
 
# Extraction du message de commit de la réponse JSON
MESSAGE=$(echo $RESPONSE | jq -r '.choices[0].message.content' 2>/dev/null)
 
if [ $? -ne 0 ] || [ -z "$MESSAGE" ]; then
    echo "Erreur lors de la génération du message de commit"
    echo "Réponse de l'API: $RESPONSE"
    exit 1
fi
 
# Affichage du message généré
echo "Message de commit généré:"
echo "------------------------"
echo "$MESSAGE"
echo "------------------------"
 
# Demande de confirmation
read -p "Voulez-vous utiliser ce message pour votre commit? (o/N) " CONFIRM
 
if [[ $CONFIRM =~ ^[oO]$ ]]; then
    git commit -m "$MESSAGE"
    echo "Commit effectué avec succès!"
else
    echo "Commit annulé. Vous pouvez modifier le message et faire le commit manuellement."
fi
  • Dernière modification: 17/01/2025 17:03