Aide-mémoire Git, classé selon ce que vous voulez faire
Aide-mémoire Git
Aide-mémoire Git par tâche : commandes, recettes d'annulation et npm | We.Inc
Un aide-mémoire Git consultable, classé par tâche : démarrer, enregistrer, créer des branches, fusionner, synchroniser et déployer, plus des recettes "j'ai fait une bêtise" pour annuler, un schéma des endroits où vivent les modifications et les commandes npm courantes.
L'essentiel du travail quotidien avec Git tient en six commandes : git status pour voir les modifications, git add pour les indexer, git commit -m pour enregistrer, git switch -c pour créer une branche, git pull pour récupérer les mises à jour et git push pour partager. Pour annuler, utilisez git restore pour les fichiers, git reset pour les commits locaux et git revert pour les commits déjà poussés.
Annuler en un coup d'œil
Annuler quoi
Commande
Les modifications d'un fichier
git restore file
L'indexation
git restore --staged file
Le dernier commit, non poussé
git reset --soft HEAD~1
Un commit déjà poussé
git revert <commit>
Cherchez parmi les commandes ci-dessous, copiez n'importe quelle ligne en un clic et servez-vous des recettes quand quelque chose a mal tourné. Les commandes utilisent git switch et git restore, les remplaçants plus clairs des nombreux usages de git checkout.
Tapez un mot comme annuler, branche ou tag dans le champ de recherche.
Copiez la commande et remplacez le nom de branche ou de fichier par le vôtre.
Consultez le schéma pour voir entre quelles zones une commande déplace les modifications.
Lancez git status avant et après toute opération qui réécrit l'historique.
Faites des commits petits et fréquents ; les petits commits sont faciles à annuler et à relire.
Ne faites jamais de reset ni de force-push sur une branche utilisée par d'autres. Utilisez plutôt revert.
Préférez --force-with-lease à --force ; il refuse si quelqu'un d'autre a poussé entre-temps.
Rédigez les messages de commit en décrivant ce que fait la modification : "Ajouter le formulaire de réservation", et non "modifs".
Gardez les secrets dans des fichiers d'environnement listés dans .gitignore dès le tout premier commit.
Questions fréquentes
Quelle est la différence entre git reset et git revert ?
reset ramène votre branche en arrière en retirant des commits de son historique ; c'est sans risque pour du travail local. revert ajoute un nouveau commit qui annule un ancien, sans toucher à l'historique, ce qui est le choix sûr une fois un commit poussé.
git switch ou git checkout ?
Les deux fonctionnent. Git 2.23 a ajouté git switch pour changer de branche et git restore pour restaurer des fichiers, en séparant les deux rôles qu'assurait git checkout. Ces commandes sont plus lisibles et plus difficiles à mal utiliser.
Que fait git fetch que git pull ne fait pas ?
fetch télécharge les nouveaux commits mais ne modifie rien dans votre branche. pull exécute fetch puis fusionne ou rebase ces commits dans votre branche courante.
Comment récupérer un commit perdu ?
Lancez git reflog. Il liste toutes les positions par lesquelles votre HEAD est passé, y compris les commits vers lesquels aucune branche ne pointe. Trouvez celui que vous cherchez et lancez git switch -c rescue <sha>.
npm install ou npm ci ?
Utilisez npm install pendant le développement ; il peut mettre à jour le fichier de verrouillage. Utilisez npm ci dans les builds et la CI ; il supprime node_modules et installe exactement ce qu'indique le fichier de verrouillage, et échoue si package.json et le fichier de verrouillage ne concordent pas.
Où vivent vos modifications
Git garde quatre endroits en tête : votre dossier de travail, la zone d'indexation (aussi appelée index), votre dépôt local et le dépôt distant. add déplace les modifications du dossier vers l'index, commit de l'index vers le dépôt, push de votre dépôt vers le distant, et pull rapatrie les commits du distant.
Du commit au site web en ligne
Beaucoup d'hébergeurs déploient quand vous poussez sur une branche. Travaillez sur une branche de fonctionnalité, poussez-la pour obtenir un aperçu, puis fusionnez-la dans main pour publier. Taguez vos versions pour pouvoir revenir rapidement à une version qui fonctionne.
Corrections pas à pas
Commit sur main au lieu d'une branche
Créez une branche là où vous êtes (elle conserve les commits), puis ramenez main au niveau du distant. Ne le faites qu'avant d'avoir poussé.
Résoudre un conflit de fusion
Git s'arrête et marque les lignes en conflit. Modifiez chaque fichier pour obtenir la version voulue, supprimez les marqueurs, puis indexez et terminez.
Un secret poussé par erreur
Changez d'abord la clé : une fois poussée, considérez qu'elle a été copiée. Retirez-la ensuite du code et de l'historique, et ajoutez le fichier à .gitignore.
Vous rédigez un README pour le dépôt ? Utilisez l'
aide-mémoire Markdown
Dossier de travail
Zone d'indexation
Dépôt local
Distant (GitHub, GitLab)
À configurer une fois
Nom inscrit sur vos commits
E-mail inscrit sur vos commits
Les nouveaux dépôts démarrent sur main
git pull fait un rebase au lieu de créer des commits de fusion
Démarrer un projet
Transformer le dossier courant en dépôt
Copier un dépôt distant sur votre machine
Relier un dépôt local à un distant
Lister les distants et leurs URL
Enregistrer son travail
Ce qui a changé, ce qui est indexé
Indexer un fichier
Indexer des parties de fichiers, bloc par bloc
Committer ce qui est indexé
Modifications pas encore indexées
Modifications indexées pour le prochain commit
Historique compact avec les branches dessinées
Brancher et fusionner
Créer une branche et s'y placer
Passer sur une branche existante
Lister les branches locales
Fusionner cette branche dans la branche courante
Rejouer la branche courante par-dessus main
Supprimer une branche fusionnée (-D force)
Copier un commit sur la branche courante
Synchroniser et déployer
Télécharger les modifications distantes sans toucher à vos fichiers
Fetch, puis fusion ou rebase dans la branche courante
Pousser une nouvelle branche et mémoriser sa destination
Pousser la branche courante
Marquer une version
Pousser ce tag (les tags ne sont pas poussés par défaut)
Mettre du travail de côté
Mettre de côté les modifications non committées
Voir ce qui est dans le stash
Récupérer le dernier stash et le retirer de la liste
J'ai fait une bêtise : les recettes
Jeter les modifications non indexées d'un fichier (irréversible)
Désindexer un fichier en gardant les modifications
Corriger le message du dernier commit (ou y ajouter des fichiers indexés) avant de pousser
Annuler le dernier commit en gardant ses modifications indexées
Supprimer le dernier commit et ses modifications (local, non poussé)
Annuler un commit poussé avec un nouveau commit ; sans risque sur les branches partagées
Retrouver un commit perdu après un reset ou un rebase, puis git switch -c rescue <sha>
Abandonner une fusion avec conflits
Abandonner un rebase qui a mal tourné
Commit sur main par erreur : mettre le travail sur une branche, puis faire un reset de main
Écraser une branche distante seulement si personne n'a poussé depuis votre dernier fetch
Prévisualiser, puis supprimer les fichiers et dossiers non suivis
Créer package.json avec les valeurs par défaut
Installation propre, exactement selon le fichier de verrouillage (à utiliser en CI)
Ajouter une dépendance
Ajouter une dépendance de développement uniquement
Retirer une dépendance
Lister les paquets qui ont des versions plus récentes
Signaler les vulnérabilités connues
Afficher quelles versions d'un paquet sont installées et pourquoi