====== 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