Commandes GIT et protips excessivement pratiques
Y a pas que WordPress et le PHP dans la vie du dév, y a GIT aussi. Morceaux choisis.
Les commandes GIT et SSH qui suivent sont issus de l’agriculture biologique sans aucun pesticide.
Permalien pour la section 7 commandes GIT pour se la raconter au bureau 7 commandes GIT pour se la raconter au bureau
Permalien pour la section Dire qu’un commit est un fix d’un autre commit Dire qu’un commit est un fix d’un autre commit
git commit --fixup COMMIT
ici remplacer « COMMIT » par le SHA-1 du commit à corriger.
Permalien pour la section Ajouter et committer directement un fichier sans faire de git add Ajouter et committer directement un fichier sans faire de git add
git commit --only MON_FICHIER
Permalien pour la section Vérifier qu’on a pas des commits qui trainent sur la machine à pousser sur le dépôt distant Vérifier qu’on a pas des commits qui trainent sur la machine à pousser sur le dépôt distant
git log --branches --not --remotes
Permalien pour la section Voir les fichiers « untracked » Voir les fichiers « untracked »
git ls-files --others
Permalien pour la section Modifier un commit mais pas le message associé Modifier un commit mais pas le message associé
git add --all && git commit --amend --no-edit
Permalien pour la section Obtenir un résumé des commits par auteurs Obtenir un résumé des commits par auteurs
git shortlog
Permalien pour la section Chercher dans GIT mais vie le contenu des fichiers Chercher dans GIT mais vie le contenu des fichiers
git log -S 'wp_safe_redirect'
remarque : pour retrouver le(s) fichier(s), il suffit de faire un git show des sha-1 des commits.
Permalien pour la section 6 logiciels pour ne pas taper ces put**\** de commandes de mer** 6 logiciels pour ne pas taper ces put**\** de commandes de mer**
Certains sont allergiques aux lignes de commandes ou trouvent simplement le terminal inconfortable. Voici les logiciels par OS.
Permalien pour la section Mac Mac
Pour mac GitUp est vraiment bien fait !
Permalien pour la section Un qui s’en tamponne de Linux (Mac et Windows) Un qui s’en tamponne de Linux (Mac et Windows)
Permalien pour la section Git Tower Git Tower
Belle promesse. Rendu soigné.
Permalien pour la section Les Cross-platforms : Mac, Windows, Linux Les Cross-platforms : Mac, Windows, Linux
Permalien pour la section L’incontournable smartgit L’incontournable smartgit
L’un des plus simples à prendre en main, l’interface n’y est pas particulièrement jolie mais elle n’est pas non plus hideuse.
Permalien pour la section Le joli Gitkraken Le joli Gitkraken
L’une des plus jolie interfaces graphiques pour GIT je trouve.
Permalien pour la section Le « geekesque » Git Cola Le « geekesque » Git Cola
L’outil est écrit en Python. L’interface est un peu austère à mon goût mais certain(e)s apprécient ce style.
Permalien pour la section L’ambitieux GitAhead L’ambitieux GitAhead
Lui, il ne se pose pas de questions, il dénonce tout ce que ses concurrents ne font pas et que lui propose :
We built GitAhead because we couldn’t find what we wanted in the Git world
Télécharger
Permalien pour la section 4 notions essentielles 4 notions essentielles
Je ne reviens pas sur les branches, tags, etc, je l’ai déjà fait dans d’autres billets.
Permalien pour la section Les conflits Les conflits
Typiquement le truc dont on te parle pas quand on te présente GIT.
Souvent on doit modifier le même fichier aux mêmes endroits et là c’est la merde parce que GIT va plus s’y retrouver au moment de fusionner tout ça dans la branche principale du projet pour déployer des correctifs par exemple.
GIT, dans ce genre de cas, va rajouter des marqueurs dans le fichier pour nous dire ce qui se passe et aider à arbitrer les conflits.
Permalien pour la section Le checkout Le checkout
La notion peut-être la moins comprise ! Pourtant c’est l’une des première qu’on apprend, mais en fait on sait pas ce qu’on fait. Le problème majeur : elle sert à faire tout et n’importe quoi. Comme la plupart des commandes GIT d’ailleurs lol
On parle parfois de répertoires physiques vs répertoires virtuels mais ça ne me semble pas clair. Je préfère distinguer deux cas.
Permalien pour la section 1er cas : je précise seulement une branche ou un tag 1er cas : je précise seulement une branche ou un tag
GIT checkout va déplacer la « tête de lecture » mais ne touchera pas aux modifications en cours.
Tu peux débuter des modifications sur le projet par exemple en étant sur master, enregistrer tes fichiers via ton éditeur favori et tester la fameuse commande :
git checkout -b ma-nouvelle-branche
tes fichiers resteront inchangés.
Permalien pour la section 2ème cas : je précise un nom de répertoire ou le nom d’un fichier 2ème cas : je précise un nom de répertoire ou le nom d’un fichier
Maintenant si tu as commencé à travailler sur le header thème WordPress du projet et que tu fais :
git checkout 1.0.9 wp-content/themes/super-theme/header.php
là tes modifications vont être écrasées et tu auras le fichier header.php tel qu’il était après le commit vers lequel pointe le tag 1.0.9
Cette nuance est souvent source d’erreurs.
Permalien pour la section Le reset Le reset
Contrairement au checkout, le reset s’en fout de tes modifs en cours, si t’as rien enregistré tant pis pour toi. Le git reset est souvent mal utilisé, c’est la raison pour laquelle on va vous décourager de l’utiliser mais c’est parfaitement viable suivant le contexte (par exemple lors d’un rebase).
Le reset peut servir ! Exemple :
Tu as fait un commit message… de merde. Tu veux pas polluer l’historique avec des écritures qui servent à rien du tout :
git reset HEAD~1
Remarque : ceci n’est valable que si ton commit pourri est sur ta machine et que tu ne l’as pas encore poussé sur le dépôt distant.
Permalien pour la section Le clean Le clean
Surtout toujours faire un dry-run !
git clean -df -n
On peut utiliser –dry-run ou -n. Cela permet de vérifier avant de supprimer un fichier et/ou des répertoires. Cette commande EFFACE les fichiers qui ne sont pas référencés dans votre versionning.
Permalien pour la section Conclusion Conclusion
Que ce soit en ligne de commandes ou via une jolie/pratique/surpuissante interface graphique, GIT sait tout faire ou presque.
Je fais de mon mieux pour mettre à jour tous mes contenus mais gardez à l'esprit que "Commandes GIT et protips excessivement pratiques" a été publié il y a plus d'un an.
Cette page est aussi disponible dans d'autres langues :