Skip to main content

À propos de Git

Découvrez le systÚme de contrÎle de version Git et son fonctionnement avec GitHub.

À propos de la gestion de versions et de Git

Un systĂšme de gestion de versions, ou VCS, suit l’historique des modifications quand des personnes et Ă©quipes collaborent sur des projets. Lorsque les dĂ©veloppeurs apportent des modifications au projet, toute version antĂ©rieure du projet peut ĂȘtre rĂ©cupĂ©rĂ©e Ă  tout moment.

Les dĂ©veloppeurs peuvent passer en revue l’historique d’un projet pour savoir :

  • Quelles modifications ont Ă©tĂ© apportĂ©es ?
  • Qui a apportĂ© les modifications ?
  • Quand les modifications ont-elles Ă©tĂ© apportĂ©es ?
  • Pourquoi les modifications Ă©taient-elles nĂ©cessaires ?

Les systĂšmes VCS donnent Ă  chaque contributeur une vue unifiĂ©e et cohĂ©rente d’un projet, en exposant le travail dĂ©jĂ  en cours. Voir un historique transparent des modifications, qui les a apportĂ©es et leur contribution au dĂ©veloppement d’un projet aide les membres de l’équipe Ă  rester en phase tout en travaillant indĂ©pendamment.

Dans un systĂšme de gestion de versions distribuĂ©, chaque dĂ©veloppeur dispose d’une copie complĂšte du projet et de l’historique du projet. Contrairement aux systĂšmes de gestion de versions centralisĂ©s autrefois populaires, les systĂšmes VCS distribuĂ©s n’ont pas besoin d’une connexion constante Ă  un dĂ©pĂŽt central. Git est le systĂšme de gestion de versions distribuĂ© le plus populaire. Git est couramment utilisĂ© pour le dĂ©veloppement de logiciels open source et commerciaux, avec des avantages significatifs pour les individus, les Ă©quipes et les entreprises.

  • Git permet aux dĂ©veloppeurs de voir la chronologie entiĂšre de leurs modifications, des dĂ©cisions et de la progression de n’importe quel projet Ă  un seul endroit. À partir du moment oĂč il accĂšde Ă  l’historique d’un projet, le dĂ©veloppeur a tout le contexte nĂ©cessaire pour le comprendre et commencer Ă  y participer.

  • Les dĂ©veloppeurs travaillent dans chaque fuseau horaire. Avec un systĂšme VCS distribuĂ© comme Git, la collaboration peut se produire Ă  tout moment tout en conservant l’intĂ©gritĂ© du code source. À l’aide de branches, les dĂ©veloppeurs peuvent proposer des modifications en toute sĂ©curitĂ© au code de production.

  • Les entreprises qui utilisent Git peuvent briser les barriĂšres de communication entre les Ă©quipes et les aider Ă  se concentrer sur l’optimisation de leur travail. De plus, Git permet d’aligner des experts dans une entreprise pour collaborer sur des projets majeurs.

À propos des dĂ©pĂŽts

Un dĂ©pĂŽt, ou projet Git, englobe la collection entiĂšre de fichiers et de dossiers associĂ©s Ă  un projet, ainsi que l’historique de rĂ©vision de chaque fichier. L’historique de fichier apparaĂźt sous forme d’instantanĂ©s dans le temps appelĂ©s commits. Les commits peuvent ĂȘtre organisĂ©s en plusieurs lignes de dĂ©veloppement appelĂ©es branches. Étant donnĂ© que Git est un systĂšme VCS distribuĂ©, les dĂ©pĂŽts sont des unitĂ©s autonomes et toute personne disposant d’une copie du dĂ©pĂŽt peut accĂ©der Ă  l’intĂ©gralitĂ© du codebase et Ă  son historique. En utilisant la ligne de commande ou d’autres interfaces faciles Ă  utiliser, un dĂ©pĂŽt Git permet Ă©galement d’interagir avec l’historique, de cloner le dĂ©pĂŽt, de crĂ©er des branches, de commiter, de fusionner, de comparer les modifications entre les versions du code, etc.

Grùce à des plateformes telles que GitHub, Git offre également davantage de possibilités de transparence et de collaboration dans le cadre d'un projet. Les dépÎts publics aident les équipes à collaborer pour créer le meilleur produit final possible.

Comment fonctionne GitHub ?

GitHub héberge des référentiels Git et fournit aux développeurs des outils leur permettant d'améliorer leur code grùce à des fonctions en ligne de commande, des questions (discussions en filigrane), des demandes d'extraction, des révisions de code ou l'utilisation d'une collection d'applications gratuites et payantes dans le GitHub Marketplace. Avec des couches de collaboration comme le flux GitHub, une communauté de 100 millions de développeurs et un écosystÚme avec des centaines d'intégrations, GitHub change la façon dont les logiciels sont construits.

GitHub intĂšgre la collaboration directement dans le processus de dĂ©veloppement. Le travail est organisĂ© en dĂ©pĂŽts oĂč les dĂ©veloppeurs peuvent dĂ©crire les exigences ou la direction et dĂ©finir les attentes pour les membres de l’équipe. Ensuite, en utilisant le flux GitHub, les dĂ©veloppeurs crĂ©ent simplement une branche pour travailler sur les mises Ă  jour, livrent les changements pour les sauvegarder, ouvrent une demande d'extraction pour proposer et discuter des changements, et fusionnent les demandes d'extraction une fois que tout le monde est sur la mĂȘme longueur d'onde. Pour plus d’informations, consultez « GitHub flow Â».

Pour les plans et les coĂ»ts GitHub, consultez GitHub Pricing. Pour plus d’informations sur la façon dont GitHub Enterprise se compare Ă  d’autres options, consultez Comparaison de GitHub Ă  d’autres solutions DevOps.

GitHub et la ligne de commande

Commandes Git de base

Pour utiliser Git, les dĂ©veloppeurs utilisent des commandes spĂ©cifiques pour copier, crĂ©er, modifier et combiner du code. Ces commandes peuvent ĂȘtre exĂ©cutĂ©es directement Ă  partir de la ligne de commande ou Ă  l’aide d’une application comme GitHub Desktop. Voici quelques commandes courantes pour l’utilisation de Git :

  • git init initialise un tout nouveau dĂ©pĂŽt Git et commence Ă  suivre un rĂ©pertoire existant. Elle ajoute un sous-dossier masquĂ© dans le rĂ©pertoire existant qui hĂ©berge la structure de donnĂ©es interne requise pour la gestion de versions.

  • git clone crĂ©e une copie locale d’un projet qui existe dĂ©jĂ  Ă  distance. Le clone inclut tous les fichiers, l’historique et les branches du projet.

  • git add indexe un changement. Git effectue le suivi des modifications apportĂ©es au codebase d’un dĂ©veloppeur, mais il est nĂ©cessaire d’indexer et de prendre un instantanĂ© des modifications pour les inclure dans l’historique du projet. Cette commande effectue l’indexation, la premiĂšre partie de ce processus en deux Ă©tapes. Toutes les modifications qui sont indexĂ©es feront partie de l’instantanĂ© suivant et de l’historique du projet. L’indexation et le commit donnent sĂ©parĂ©ment aux dĂ©veloppeurs un contrĂŽle complet sur l’historique de leur projet sans modifier la façon dont ils codent et travaillent.

  • git commit enregistre l’instantanĂ© dans l’historique du projet et termine le processus de suivi des modifications. En bref, un commit fonctionne comme la prise d’une photo. Tout ce qui a Ă©tĂ© indexĂ© avec git add fera partie de l’instantanĂ© avec git commit.

  • git status affiche l’état des modifications comme non suivies, modifiĂ©es ou indexĂ©es.

  • git branch montre les branches en cours de traitement localement.

  • git merge fusionne les lignes de dĂ©veloppement. Cette commande est gĂ©nĂ©ralement utilisĂ©e pour combiner les modifications apportĂ©es sur deux branches distinctes. Par exemple, un dĂ©veloppeur fusionne quand il souhaite combiner les modifications d’une branche de fonctionnalitĂ© dans la branche principale pour le dĂ©ploiement.

  • git pull met Ă  jour la ligne de dĂ©veloppement locale avec les mises Ă  jour de son Ă©quivalent distant. Les dĂ©veloppeurs utilisent cette commande si un collĂšgue a effectuĂ© des commits sur une branche d’un dĂ©pĂŽt distant et qu’ils souhaitent reflĂ©ter ces modifications dans leur environnement local.

  • git push met Ă  jour le dĂ©pĂŽt distant avec les commits effectuĂ©s localement sur une branche.

Pour plus d’informations, consultez le guide de rĂ©fĂ©rence complet des commandes Git.

Exemple : Contribuer Ă  un dĂ©pĂŽt existant

# download a repository on GitHub to our machine
# Replace `owner/repo` with the owner and name of the repository to clone
git clone https://github.com/owner/repo.git

# change into the `repo` directory
cd repo

# create a new branch to store any new changes
git branch my-branch

# switch to that branch (line of development)
git checkout my-branch

# make changes, for example, edit `file1.md` and `file2.md` using the text editor

# stage the changed files
git add file1.md file2.md

# take a snapshot of the staging area (anything that's been added)
git commit -m "my snapshot"

# push changes to github
git push --set-upstream origin my-branch

Exemple : Démarrer un nouveau référentiel et le publier sur GitHub

Tout d'abord, vous devrez crĂ©er un nouveau rĂ©fĂ©rentiel sur GitHub. Pour plus d’informations, consultez « Hello World Â». N’initialisez pas le dĂ©pĂŽt avec un fichier Lisez-moi, .gitignore ou de licence. Ce dĂ©pĂŽt vide attend votre code.

# create a new directory, and initialize it with git-specific functions
git init my-repo

# change into the `my-repo` directory
cd my-repo

# create the first file in the project
touch README.md

# git isn't aware of the file, stage it
git add README.md

# take a snapshot of the staging area
git commit -m "add README to initial commit"

# provide the path for the repository you created on github
git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY-NAME.git

# push changes to github
git push --set-upstream origin main

Exemple : Contribuer Ă  une branche existante sur

Cet exemple suppose que vous avez déjà un projet appelé repo sur la machine et qu'une nouvelle branche a été poussée sur GitHub depuis la derniÚre fois que des modifications ont été apportées localement.

# change into the `repo` directory
cd repo

# update all remote tracking branches, and the currently checked out branch
git pull

# change into the existing branch called `feature-a`
git checkout feature-a

# make changes, for example, edit `file1.md` using the text editor

# stage the changed file
git add file1.md

# take a snapshot of the staging area
git commit -m "edit file1"

# push changes to github
git push

ModÚles de développement collaboratif

Il existe deux façons principales de collaborer sur GitHub :

  1. DépÎt partagé
  2. Duplication (fork) et tirage (pull)

Avec un dépÎt partagé, les individus et les équipes sont explicitement désignés comme contributeurs avec un accÚs en lecture, en écriture ou administrateur. Cette structure de permission simple, associée à des fonctionnalités telles que les branches protégées, aide les équipes à progresser rapidement lorsqu'elles adoptent GitHub.

Pour un projet open source ou pour les projets auxquels tout le monde peut contribuer, la gestion des autorisations individuelles peut ĂȘtre difficile, mais un modĂšle de duplication et tirage permet Ă  toute personne qui peut voir le projet de contribuer. Une duplication est une copie d’un projet sous le compte personnel d’un dĂ©veloppeur. Chaque dĂ©veloppeur dispose d’un contrĂŽle total de sa duplication et est libre d’implĂ©menter un correctif ou une nouvelle fonctionnalitĂ©. Le travail effectuĂ© dans les duplications est conservĂ© sĂ©parĂ©ment ou exposĂ© dans le projet d’origine par le biais d’une demande de tirage. LĂ , les chargĂ©s de maintenance peuvent examiner les modifications suggĂ©rĂ©es avant leur fusion. Pour plus d’informations, consultez « Contribution Ă  un projet Â».