Ă 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Ă© avecgit add
fera partie de lâinstantanĂ© avecgit 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 :
- DépÎt partagé
- 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 ».