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