[[Category:Software]]
== Description ==
[https://en.wikipedia.org/wiki/Git Git] est un outil distribué rapide et sécuritaire pour la gestion de code source (site web, [http://gitscm.org gitscm.org]). L’application a été créée pour le projet Linux par [http://en.wikipedia.org/wiki/Linus_Torvalds Linus Torvalds] et est maintenue par [http://en.wikipedia.org/wiki/Junio_Hamano Junio Hamano]. Le développement de Git se fait sur la plateforme [https://git.wiki.kernel.org/index.php/Main_Page 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 [http://nvie.com/posts/a-successful-git-branching-model/ 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 ==
{| class="wikitable"
|+ Commandes de base
! 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
|}
{| class="wikitable"
|+ Commandes pour voir 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
|}
{| class="wikitable"
|+ Commandes relatives aux branches, étiquettes et dépôt distants
! 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
|}
{| class="wikitable"
|+ Commandes relatives aux rustines
! Commande
! Description
|-
| git format-patch
| créer une rustine
|-
| git am
| appliquer une rustine
|-
| git send-email
| envoyer une rustine
|}
{| class="wikitable"
|+ Autres commandes
! 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 :
{{Command| git init my-project}}
Pour cloner un dépôt :
{{Command | 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.
{{Commands
| cd my-project
| nano file.txt
}}
Quand le travail est terminé, ajoutez le fichier
{{Command| git add file.txt}}
et faites un ''commit'' de la modification.
{{Command| git commit }}
Il est maintenant possible de propager les modifications au dépôt original avec
{{Command| 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 ==
[http://github.com GitHub] et [http://bitbucket.org 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.