Git
Description
Git est un outil distribué rapide et sécuritaire pour la gestion de code source (site web, gitscm.org). L’application a été créée pour le projet Linux par Linus Torvalds et est maintenue par Junio Hamano. Le développement de Git se fait sur la plateforme kernel.org.
Principe de fonctionnement
Contrairement aux outils de gestion de code source moins récents, Git fonctionne en mode décentralisé et les développeurs ne sont pas dépendants d'un dépôt central pour archiver des modifications. Chaque dépôt Git contient l’historique de l’arbre de travail complet. Chaque objet Git (modification ou changeset, fichier, répertoire) est une feuille d’un arbre à branches multiples. Le développement d'un projet avec Git est basé sur un modèle où une branche correspond à une fonctionnalité. Plusieurs itérations de la fonctionnalité peuvent être archivées avant que celle-ci ne soit fusionnée avec le tronc commun. Pour les détails sur le modèle de développement en branches, voyez A successful Git branching model.
Une technique particulièrement intéressante est celle de la cueillette de cerises (cherry picking) qui consiste à prendre une partie d’une branche pour la fusionner avec une autre.
Utilisation
Règle générale, un développeur doit pouvoir
- cloner ou créer le dépôt;
- effectuer les modifications;
- faire un commit des modifications;
- propager les modifications vers le dépôt d’origine.
Puisque Git est décentralisé, il n'y a pas nécessairement dépôt autoritaire.
Sommaire des commandes
Commande | Description |
---|---|
git config | configurer Git |
git init | créer un nouveau dépôt |
git clone | cloner un dépôt existant |
git add | ajouter un fichier ou un répertoire à l’index |
git rm | supprimer un fichier ou un répertoire de l’index |
git commit | valider et enregistrer (commit) les modifications dans un dépôt |
git push | propager les modifications validées et enregistrées vers un autre dépôt |
git pull | récupérer les données d'un autre dépôt et appliquer (‘’merge’’) les modifications à votre dépôt |
git fetch | récupérer les modifications d’un différent dépôt sans les appliquer à votre dépôt |
git merge | fusionner les changements |
Commande | Description |
---|---|
git blame | connaître l’origine de chaque modification |
git log | avoir l’historique des enregistrements |
git diff | voir les différences entre deux versions |
git status | afficher le statut des fichiers |
git show | afficher divers types d’objets Git |
git cat-file | obtenir le contenu, le type ou la taille d’objets |
Commande | Description |
---|---|
git branch | gérer les branches de développement |
git tag | gérer les étiquettes de versions |
git remote | gérer les dépôts distants |
git checkout | extraire une branche ou un chemin |
git reset | changer la tête |
Commande | Description |
---|---|
git format-patch | créer une rustine |
git am | appliquer une rustine |
git send-email | envoyer une rustine |
Commande | Description |
---|---|
git bisect | rechercher rapidement un problème |
git gc | nettoyer le dépôt |
git rebase | linéariser l’historique |
git grep | chercher le contenu |
Créer ou cloner un dépôt
La première étape est habituellement de créer votre propre dépôt ou de cloner un dépôt existant.
Pour créer un dépôt :
[name@server ~]$ git init my-project
Pour cloner un dépôt :
[name@server ~]$ git clone git://github.com/git/git.git
Valider et enregistrer une modification
Quand le dépôt est prêt, changez de répertoire et éditez le fichier.
[name@server ~]$ cd my-project
[name@server ~]$ nano file.txt
Quand le travail est terminé, ajoutez le fichier
[name@server ~]$ git add file.txt
et faites un commit de la modification.
[name@server ~]$ git commit
Il est maintenant possible de propager les modifications au dépôt original avec
[name@server ~]$ git push origin main
Dans cette dernière commande, origin est le dépôt à distance et main est la branche courante qui sera propagée.
Avec les dépôts Git moins récents, vous devrez peut-être devoir utiliser git push origin master.
Hébergement de dépôts Git
GitHub et Bitbucket sont les deux principaux services d’hébergement de Git. Ils sont tous les deux disponibles pour les projets commerciaux comme pour les projets libres.