Ici, juste un article me permettant de garder mémoire des commandes utiles (pour moi) sur git. Je n'utilise que peu git et cet outil permet tellement de choses qu'il est parfois complexe de s'y retrouver.
On se place dans le dossier que l'on veut "giter" :
Il existe différentes méthodes pour ignorer des fichiers. La plus simple et la plus connue reste l'utilisation du fichier .gitignore placé à la racine du dépôt.
On y ajoute ensuite les fichiers/dossiers qu'on veut ignorer. Cela peut être des noms de fichiers, de dossiers, des chemins, on peut utiliser aussi l'étoile.
Si on souhaite supprimer des fichiers qu'on a publié et qu'on ajoute au .gitignore :
L'option --cached indique à git de ne pas supprimer le fichier de l'arborescence de travail mais seulement de le supprimer de l'index.
Avec un dossier, de manière récursive, on ajoute l'option -r :
On peut faire un check avec l'option -n
Pour créer une nouvelle branche :
Pour lister les branches :
Pour supprimer une branche :
Pour renommer une branche :
Pour basculer sur une branche :
La commande git stash permet de remiser ("mettre de côté") des développements pour faire une petite modification et la "commiter" avant de reprendre ces développements mais sans les avoir commités. On peut en effet voir avec la commande git status après un git stash qu'il n'y a plus de modification à commiter.
La commande suivante permet de vérifier ce qui est remisé :
Pour être plus précis et commenté ce qu'on a remisé :
Pour avoir des détails sur une remise :
Encore plus de détails :
Il est possible de faire plusieurs stash
Pour reprendre le travail remisé et l'appliquer au commit courant :
ou pour spécifier le stash si on en a plusieurs :
Les modifications remisées le sont toujours après la commande précédente même si elles ont été importées dans le commit courant. Pour les supprimer :
On peut également tout faire en une commande (apply + drop) avec la commande :
Par défaut, git stash ne prend pas en compte les nouveaux fichiers. Pour les prendre en compte :
Prenons un exemple qui m'est arrivé. J'ai une branche main, en prod et publiée sur GitHub, avec un fichier index.html. Pour faire de nouveaux développements, je créé une branche dev. Je fais des développements sans connaitre la fonction git stash :
Je voudrais commiter puis publier les modifications d'index.html dans la branche main car j'ai corrigé une erreur mais sans commiter le reste.
C'est parti !
La commande git-log permet de voir l'historique des commit.
La plus courante, renvoit une liste de commits, avec leurs identifiants :
Quelques options complémentaires utiles :
La commande git reset va affecter l'historique en supprimant des commits !
La commande git reset permet de revenir en arrière sur les commits.
Tout d'abord, il faut connaitre l'identifiant du commit voulu (voir ci-dessus la commande git log).
Ensuite la commande de base, va permettre de revenir en arrière en supprimant les commits suivants mais en conservant la modification des fichiers. Les fichiers seront alors en statut non stagé :
Il existe plusieurs modes de fonctionnement de la commande git reset, j'en présente 3 ici :
Il est aussi possible de passer directement via CLI sans token mais cela nécessite l'installation de GitHub qui n'est pas dans les dépôts officiels de Debian ou autres distributions. Je trouve les méthodes via token et SSH bien mieux.
Pour générer un token, il faut se rendre sur son compte GitHub, cliquer sur son image en haut à droite puis Settings.
Cliquer ensuite tout en bas à gauche sur Developer settings puis Personnal access tokens et Tokens (classic).
Cliquer ensuite sur Generate new token puis Generate new token (classic).
Dans cette fenêtre, on peut paramétrer les accès et la date d'expiration du token. Une fois rempli, cliquer en bas sur Generate token.
La clé est générée et affichée. Elle sert de mot de passe à la place du mot de passe utilisateur dans la commande git push (
voir plus bas dans l'article)
Attention à bien copier cette clé car on ne peut la retrouver ensuite
Pour cela, il est nécessaire :
Pour cela, plein de tutos existent. Sinon, un petit tour sur mon article
Ansible et c'est décrit.
Pour cela, c'est très simple, on se rend sur compte Github, puis on clique sur l'icone en haut à droite puis settings.
On va ensuite à gauche dans le menu SSH and GPG keys avant de cliquer sur le bouton vert "New SSH Key".
On peut ensuite faire un copier/coller du texte contenu dans le fichier de clé publique (fichier.pub).
Attention à ne pas copier le contenu de sa clé privée !
Il faut ensuite activer ssh-agent sur le poste local avec la commande suivante :
puis ajouter sa clé à l'agent ssh :
Si vous avez entrer une passphrase sur la clé (ce qui est fortement recommandé), elle sera demandée ici
On peut ensuite tester la connexion à github avec la commande suivante :
après avoir validé l'empreinte, vous devriez avoir un beau message de confirmation !
Pour ajouter un dépôt distant (dans lequel on publiera les fichiers) :
permet d'ajouter le dépôt distant défini par son url.
Cette URL peut varier en fonction de la méthode de publication :
Pour publier les commits d'une nouvelle branche (qu'on a en local mais en distant) :
Pour publier les modifications de toutes les branches :
La commande suivante permet de voir quel dépôt distant est associé au dépôt local :