This document provides an introduction to using git for version control. It outlines three scenarios: 1) a single developer using a local repository, 2) a team of developers using a central remote repository, and 3) contributing to a software project hosted on GitHub. The document demonstrates how to initialize repositories, add and commit changes, branch, merge, resolve conflicts, push and pull from remote repositories, and set up a shared remote repository. It provides summaries of key git commands and demonstrations of workflows through examples.
Hands-on-Lab (TP) sur l'utilisation de Git en mode avancé dispensé avec mes collègues Alexis DMYTRYK et Thomas COLLIGNON lors de DevoxxFR 2018.
Présentation disponible ici : https://fr.slideshare.net/JrmeTAMBORINI/tp-git-avanc-devoxxfr-2018-pres
A Basic Git intro presentation for SVN long timers doing their first steps in Git.
This presentation is meant to clear up most of the basic concepts which cause confusion with developers using Git as if it was an SVN.
Cette formation présente les élements de base pour maîtriser git/gitLab. Elle contient aussi des astuces et de bonnes pratiques pour mieux utiliser git.
This document provides an introduction to the version control system Git. It defines key Git concepts like the working tree, repository, commit, and HEAD. It explains that Git is a distributed version control system where the full history of a project is available once cloned. The document outlines Git's history, with it being created by Linus Torvalds to replace the commercial BitKeeper tool. It then lists and briefly describes important Git commands for local and collaboration repositories, including config, add, commit, log, diff, status, branch, checkout, merge, remote, clone, push, and pull. Lastly, it covers installing Git and generating SSH keys on Windows for accessing Git repositories.
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
This document provides an outline for a course on learning Git version control. The course covers getting Git setup, the basic concepts and workflow of Git, branching and merging, resolving conflicts, working with remote repositories, and various Git commands. The document lists several modules that will be covered, including getting started, everyday Git usage, branching, merging and rebasing, additional tools and concepts, and advice on applying the skills learned. The goal is to teach participants how to install and use Git for version control on individual, local, and distributed projects.
Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
Une riche présentation de Mapping Objet Relationnel qui traite le standard JPA et l’implémentation Hibernate en les intégrant avec le frammework IOC spring.
This document discusses using Git and GitHub for version control. It covers Git terminology and commands for initializing a Git repository, configuring Git, adding and committing files, branching and merging, and using an code editor with Git. Key points include using 'git init' to create a new local repository, 'git add' to stage files for committing, 'git commit' to save changes to the repository, and 'git branch', 'git checkout' and 'git merge' for managing branches. The document provides guidance on writing good commit messages and installing Git on different operating systems.
Distributed version control with git provides a brief introduction to git. It discusses why git was created, what git is, the git object model of blobs, trees and commits, collaborating through local and remote repositories, branching and merging, and an overview of the basic git workflow. The document provides resources for learning more about git.
This document provides an overview of Git and its basic commands for beginners. It covers installing Git, creating repositories on Bitbucket and GitHub, tracking changes with commands like add, commit, push, pull, and resolving merge conflicts. It also discusses branching, tagging, reverting changes, and ignoring files. Key concepts explained include distributed version control, staging changes, commit histories, and setting up aliases and submodules.
This document provides an overview of Git commands and workflows:
- It introduces basic Git commands for setting up a local repository, adding and committing files, viewing the status and differences between commits, ignoring files, and more.
- Common workflows are demonstrated including cloning a repository, making changes and committing them locally, and pushing changes to a remote repository.
- More advanced topics are covered like branching, merging, rebasing, resolving conflicts, and using tools to help with these processes.
- Configuration options and tips are provided to customize Git behavior and inspect repositories.
Git is a distributed version control system that allows developers to work collaboratively on projects. It works by creating snapshots of files in a project over time. Developers can commit changes locally and then push them to a remote repository to share with others. Key Git concepts include repositories, commits, branches, cloning repositories from remote locations, and commands like push, pull, commit, log and diff to manage changes.
The document provides an overview of version control systems and introduces Git and GitHub. It discusses the differences between centralized and distributed version control. It then covers the basics of using Git locally including initialization, staging files, committing changes, branching and merging. Finally, it demonstrates some common remote operations with GitHub such as pushing, pulling and tagging releases.
This document provides an introduction to using git for version control. It outlines three scenarios: 1) a single developer using a local repository, 2) a team of developers using a central remote repository, and 3) contributing to a software project hosted on GitHub. The document demonstrates how to initialize repositories, add and commit changes, branch, merge, resolve conflicts, push and pull from remote repositories, and set up a shared remote repository. It provides summaries of key git commands and demonstrations of workflows through examples.
Hands-on-Lab (TP) sur l'utilisation de Git en mode avancé dispensé avec mes collègues Alexis DMYTRYK et Thomas COLLIGNON lors de DevoxxFR 2018.
Présentation disponible ici : https://fr.slideshare.net/JrmeTAMBORINI/tp-git-avanc-devoxxfr-2018-pres
A Basic Git intro presentation for SVN long timers doing their first steps in Git.
This presentation is meant to clear up most of the basic concepts which cause confusion with developers using Git as if it was an SVN.
Cette formation présente les élements de base pour maîtriser git/gitLab. Elle contient aussi des astuces et de bonnes pratiques pour mieux utiliser git.
This document provides an introduction to the version control system Git. It defines key Git concepts like the working tree, repository, commit, and HEAD. It explains that Git is a distributed version control system where the full history of a project is available once cloned. The document outlines Git's history, with it being created by Linus Torvalds to replace the commercial BitKeeper tool. It then lists and briefly describes important Git commands for local and collaboration repositories, including config, add, commit, log, diff, status, branch, checkout, merge, remote, clone, push, and pull. Lastly, it covers installing Git and generating SSH keys on Windows for accessing Git repositories.
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
This document provides an outline for a course on learning Git version control. The course covers getting Git setup, the basic concepts and workflow of Git, branching and merging, resolving conflicts, working with remote repositories, and various Git commands. The document lists several modules that will be covered, including getting started, everyday Git usage, branching, merging and rebasing, additional tools and concepts, and advice on applying the skills learned. The goal is to teach participants how to install and use Git for version control on individual, local, and distributed projects.
Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
Une riche présentation de Mapping Objet Relationnel qui traite le standard JPA et l’implémentation Hibernate en les intégrant avec le frammework IOC spring.
This document discusses using Git and GitHub for version control. It covers Git terminology and commands for initializing a Git repository, configuring Git, adding and committing files, branching and merging, and using an code editor with Git. Key points include using 'git init' to create a new local repository, 'git add' to stage files for committing, 'git commit' to save changes to the repository, and 'git branch', 'git checkout' and 'git merge' for managing branches. The document provides guidance on writing good commit messages and installing Git on different operating systems.
Distributed version control with git provides a brief introduction to git. It discusses why git was created, what git is, the git object model of blobs, trees and commits, collaborating through local and remote repositories, branching and merging, and an overview of the basic git workflow. The document provides resources for learning more about git.
This document provides an overview of Git and its basic commands for beginners. It covers installing Git, creating repositories on Bitbucket and GitHub, tracking changes with commands like add, commit, push, pull, and resolving merge conflicts. It also discusses branching, tagging, reverting changes, and ignoring files. Key concepts explained include distributed version control, staging changes, commit histories, and setting up aliases and submodules.
This document provides an overview of Git commands and workflows:
- It introduces basic Git commands for setting up a local repository, adding and committing files, viewing the status and differences between commits, ignoring files, and more.
- Common workflows are demonstrated including cloning a repository, making changes and committing them locally, and pushing changes to a remote repository.
- More advanced topics are covered like branching, merging, rebasing, resolving conflicts, and using tools to help with these processes.
- Configuration options and tips are provided to customize Git behavior and inspect repositories.
Git is a distributed version control system that allows developers to work collaboratively on projects. It works by creating snapshots of files in a project over time. Developers can commit changes locally and then push them to a remote repository to share with others. Key Git concepts include repositories, commits, branches, cloning repositories from remote locations, and commands like push, pull, commit, log and diff to manage changes.
The document provides an overview of version control systems and introduces Git and GitHub. It discusses the differences between centralized and distributed version control. It then covers the basics of using Git locally including initialization, staging files, committing changes, branching and merging. Finally, it demonstrates some common remote operations with GitHub such as pushing, pulling and tagging releases.
Git est un logiciel de gestion de versions décentralisé qui vous permettra de gérer la vie d'un code informatique. Il permet une stratégie de backup, de gérer des versions et de stocker tout l'historique des modifications apportées à un projet informatique.
Cette présentation montre plusieurs outils gratuits qui peuvent être utilisés pour gérer plusieurs aspects de la gestion de projets, en particulier informatique, de manière collaborative. On y voit comment versioner son code avec Git, déployer son code avec Heroku, tester son code avec Travis, gérer et planifier son temps et ses tâches avec Trello, FreedCamp et Tom'splanner, comment communiquer avec Slack et comment rédiger sa documentation avec Read the Docs.
https://git-scm.com/ Git : LE gestionnaire de révision
https://github.com/ : LE site de dev. collaboratif
https://travis-ci.org/ : test automatisé
https://coveralls.io/ : couverture de code
https://readthedocs.org/ : génération de documentation
https://pypi.python.org : distribution / installation Python
git est un outil essentiel pour la gestion des versions des codes sources des projets informatiques pour les développeurs travaillant en équipe comme ceux qui travaillent depuis plusieurs ordinateurs à la fois.
Utilisé conjointement à des systèmes d'intégration continue, il permet de générer des tests automatiques, des binaires, des versions de production comme de test de logiciels avec un minimum d'action de la part des développeurs.
Cependant il faut quand même maîtriser ses bases pour en tirer le meilleur : savoir comment gérer des branches, les commit et les fichiers qui doivent se trouver dans un "projet git".
Il est également bien de savoir créer et participer à des projets open source pour partager ses connaissances et compétences avec la communauté de développeurs. git est très utile pour accéder à GitHub et d'autres outils de stockage de sources et de gestion de projets logiciels.
Lors de cette présentation proposée le 22 décembre 2020, Patrick Prémartin explique le fonctionnement de base de git et comment s'en servir conjointement à l'IDE de RAD Studio utilisé pour du développement Delphi comme C++Builder.
Rediffusion de cette présentation et liens complémentaires sur https://serialstreameur.fr/webinaire-20201222.php
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
5. 5
Il est utile
de pouvoir retrouver les différentes étapes de son travail
d'avoir plusieurs versions de son travail en même temps
6. 6
Toute production - code ou autre - fait partie du patrimoine de son équipe et doit
être conservée de manière pérenne (c.a.d avec des pratiques connues)
7. 7
Toute production - code ou autre - fait partie du patrimoine de son équipe et doit
être conservée de manière pérenne (c.a.d avec des pratiques connues)
8.
9. 9
Il existe beaucoup de SCM : CVS, SVN, Git, Mercurial,...
En général chaque nouvelle génération d'outil rend la précédente obsolète
Git apporte beaucoup de souplesses :
Le travail déconnecté
La possibilité de travailler facilement sur plusieurs versions de l'application
(les branches)
La version de production
La version en développement
La possibilité de travailler à plusieurs :
Avec un serveur central
Avec plusieurs serveurs centraux
Directement entre plusieurs développeurs
10. 10
La plupart des opérations
s’effectuent sur le poste du
développeur sans passer par le
réseau
Rapide
Git est disponible sur tous les
systèmes d’exploitation. Il peut
être utilisé en ligne de commande
ou via un IDE.
Agnostique
Il existe, sur Internet, un grand nombre de
forge basées sur Git. Elles ajoutent des
fonctionnalités sociales permettant de
proposer des évolutions, des corrections…
Social
Via ses fonctionnalités, Git permet de
mettre en place des organisations du
développement permettant de résoudre
les soucis usuels, par exemple GitFlow.
Efficace
11.
12. 12
Par défaut Git s'utilise avec l'invite de commande
Les principaux IDE (Eclipse, Netbeans, IntelliJ ...) masquent ces commandes en les
intégrant à leur interface
Les exercices proposés utilisent l'IDE Eclipse
Toutefois, afin de permettre le passage vers d'autres IDE et l'appronfondissement
de l'outil, les commandes sont indiquées en marge des exercices
13. 13
Plusieurs serveurs Git en ligne et gratuits existent (GitHub, BitBucket,...)
Il existe également des serveurs à installer localement (GitLab C.E.)
14.
15. 15
Pour chaque projet, Git utilise un répertoire (.git) dans lequel il va mettre
l'ensemble des données/métadonnées permettant de retracer l'histoire du projet.
C'est le dépôt local du projet. On y trouve
Toutes les versions des fichiers
Les différentes branches
Git va extraire de ce dépôt une version du projet dans un répertoire afin de
permettre l'édition des fichiers. C'est le répertoire de travail du projet.
En général le dépôt local est un sous répertoire du projet
17. 17
Avec Git, le cycle classique est le suivant :
1. On ajoute/supprime/modifie des fichiers dans l'espace de travail
2. On groupe l'ensemble de ces modifications (on parle d'indexation)
3. On valide (commit) ces modifications dans le dépôt local en y associant un
commentaire (exemple: correction de l'anomalie #145)
23. 23
Dans le projet, créez deux fichiers, fichier1.txt et fichier2.txt avec comme contenu: Contenu du
fichier X
Ouvrir la vue Git Staging 1
2
24. 24
Dans le projet, créez deux fichiers, fichier1.txt et fichier2.txt avec comme contenu: Contenu du
fichier X
La vue Git Staging vous permet de
1. Lister les fichiers modifiés
2. Lister les fichiers modifiés ajoutés dans la zone de transit
3. Faire basculer les fichiers d’un état à l’autre
4. Effectuer un commit et un push
1
2
3
3
4
25. 25
Par le menu contextuel
Sélectionnez le fichier fichier1.txt, dans le menu
contextuel cliquez sur :
Team > Add to index
26. 26
Par le menu contextuel
•Sélectionnez le fichier fichier1.txt
•Dans le menu contextuel cliquez sur :
Team > Add to index
Le fichier apparait dans la zone de transit
1
2
27. 27
Par la vue Git Staging
•Sélectionnez le fichier fichier2.txt dans la vue Git Staging
•Cliquez sur l’icône + (ou faites glisser le fichier vers la zone de transit)
Le fichier apparait dans la zone de transit
1 2
Les fichiers sont désormais indexés et vont pouvoir être proposés au prochain Commit
28. 28
Par la vue Git Staging
L’ajout de fichiers au dépôt local s’appelle un commit.
Lors du premier commit au sein d’Eclipse vous allez devoir indiquer votre nom. Vous pouvez
également le modifier à chaque commit.
A chaque commit, vous devrez renseigner un commentaire pour accompagner votre dépôt.
Renseignez un commentaire et cliquez sur Commit
29. 29
Par la vue Git Staging
1. Les fichiers fichier1.txt et fichier2.txt disparaissent
de la vue Git Staging
2. Dans l’explorateur les fichiers apparaissent sans ?
ce qui signifie qu’ils sont pris en charge par Git.
1
2
31. 31
Certains fichiers ne doivent pas être commités :
Fichier spécifiques à un IDE ou à un poste de développement
Fichiers générés (.class, .jar)
…
Nous allons utiliser le mécanisme standard de Git qui repose sur un fichier
nommé .gitignore :
Créez un fichier .gitignore à la racine du projet
Indiquez comme contenu .project
Cela signifie le fichier .project (fichier spécifique à Eclipse) va être ignoré par Git.
Sauvegardez le fichier
La vue Git Staging n’affiche plus le fichier .project. Par contre le fichier .gitignore
est apparu.
32. 32
Remarques
Le fichier .gitignore est un fichier ordinaire : il doit être ajouté au dépôt et commité.
Ajoutez le fichier .gitignore au dépôt local
La syntaxe du fichier .gitignore est détaillée ici : http://git-scm.com/docs/gitignore
Des exemples de fichiers .gitignore adaptés à chaque language/framework sont
disponibles : https://github.com/github/gitignore
33. 33
Lorsque que l'on supprime un fichier - via l'IDE par exemple - il faut répercuter cette suppression
au niveau du dépôt local si celui-ci y était déjà présent. Cette opération est similaire à un
commit.
Créez un fichier fichier3.txt avec comme contenu Contenu du fichier 3. Ajoutez ce fichier au dépot
local (ajoutez le à l’index, puis commitez-le).
Supprimez le fichier dans l'arborescence du projet.
Dans la vue Git Staging, le fichier fichier3.txt apparait avec l’icône x afin de souligner qu’il s’agit
de la suppression du fichier
34. 34
Lorsque que l'on supprime un fichier - via l'IDE par exemple - il faut répercuter cette suppression
au niveau du dépôt local si celui-ci y était déjà présent. Cette opération est similaire à un
commit.
Créez un fichier fichier3.txt avec comme contenu Contenu du fichier 3. Ajoutez ce fichier au dépot
local (ajoutez le à l’index, puis commitez-le).
Supprimez le fichier dans l'arborescence du projet.
Dans la vue Git Staging, le fichier fichier3.txt apparait avec l’icône x afin de souligner qu’il s’agit
de la suppression du fichier
36. 36
Répercuter le changement de nom d'un fichier présent au dépôt est une action similaire à un
ajout et à une suppression. La différence est que les fichiers sont déjà en zone de transit.
Renommez le fichier fichier2.txt en fichier2b.txt (via le menu contextuel)
La vue Git Staging affiche dans la zone de transit le fichier supprimé et le fichier ajouté
Commitez
37. 37
Historique d’un fichier
L'onglet History permet de consulter l'historique d’un
fichier :
ses différents commits (avec leur messages)
ses différentes branches
Les commits sont identifiées par un identifiant unique
Dans le menu contextuel d’un fichier, cliquer sur
Team > Show in History
1
2
38. 38
Historique d’un projet
L'onglet History permet également de consulter
l'historique d’un projet :
ses différents commits (avec leur messages)
ses différentes branches
Dans le menu contextuel du projet, cliquer sur
Team > Show in History
1
2
39. 39
Différence entre les versions
Dans le fichier fichier1.txt ajoutez une ligne ayant
comme contenu Ligne ajoutée ultérieurement
Commitez le fichier
Dans le menu contextuel du fichier fichier1.txt,
cliquer sur Compare with > Previous revision
1
40. 40
Différence entre les versions
1. Version courante
2. Précedent commit
La comparaison de version permet de comparer un fichier avec n’importe quelle de ses
versions.
1 2
42. 42
Une étiquette permet de donner un nom sur un instantané afin d'être facilement identifiable
par la suite (pour faire une branche, créer une version,…).
Par exemple, cela permet d'associer un numéro de version à un état du projet.
1. Dans l’onglet History, sélectionnez un ancien commit.
2. Dans le menu contextuel, sélectionnez Create Tag…
1
2
43. 43
1. Indiquez un nom de Tag
2. Indiquez un commentaire
3. Cliquez sur Create Tag
Le tag apparaît alors dans l’historique
Note pour plus tard: un tag doit être pushé…
1
2
3
45. 45
La commande git checkout permet de naviguer entre les branches et les commits (cf. infra).
Elle peut toutefois être utilisée pour restaurer un fichier dans une version plus ancienne. Par
exemple fichier3.txt (actuellement supprimé).
Identifiez l'identifiant du commit contenant la version de fichier3.txt souhaitée via la vue History.
Dans notre cas 9f42a74
46. Ouvrez un terminal à la racine du projet.
Lancez la commande git checkout 9f42a74 fichier3.txt dans l’onglet ouvert
Rafraichissez votre espace de travail dans Eclipse.
Le fichier a été restauré et est présent dans l'espace de travail comme un nouveau fichier.
46
47. Il peut être utile - mais dangereux - de repartir d'un commit plus ancien et de supprimer
les commits survenus depuis.
Cette opération peut être effectué à partir d’un commit affiché dans l’onglet History.
Il est peut-être plus prudent de créer une branche à partir du commit identifié.
Les différents types de Reset permettent de
conserver ou supprimer les modifications depuis
le commit.
47
48.
49. Il peut être nécessaire de travailler simultanément sur plusieurs versions du code:
Version en production
Version en développement
...
Le concept de branche répond à ce besoin et les différents SCM le mettent en œuvre.
Toutefois, généralement, l'implémentation proposée fait que le concept est rarement utilisé.
Exemple: En SVN, les branches sont gérées sur le serveur et le temps de création des branches
puis de bascule d'une branche à l'autre est rédhibitoire.
Avec Git, les branches sont très simples à gérer et le passage entre deux branches est
quasi instantané.
49
50. En 2010, Vincent Driessen publie un article intitulé A successful Git branching
model (http://nvie.com/posts/a-successful-git-branching-model/) proposant une méthodologie
efficace pour gérer les projets avec Git grâce aux branches.
Cette méthodologie a été rapidement adoptée par beaucoup de grands acteurs du
développement, notamment dans le cadre de méthodologie agile.
50
52. Branches pérennes
master : branche correspondant au code en production
develop : branche correspondant au code en développement
Branches transitoires
Feature : pour toute nouvelle fonctionalité ou correction de bug
Hotfix: correction de bug en production
Release : livraison
52
Principaux points
53. Une surcouche à Git en mode commande est également disponible mettant en
œuvre de manière explicite les principes de GitFlow. Toutefois, elle n'est pas
indispensable.
53
Remarque
http://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html
54. Créer une nouvelle branche revient donc à ajouter un nouveau pointeur sur
l'instantané courant.
Changer de branche consiste à basculer vers l'instantané pointé par la branche et à
mettre à jour le pointeur HEAD.
54
55. Chaque commit entraîne la création d'un instantané identifié par un numéro
unique.
Avec Git, une branche est simplement un pointeur vers un instantané
Un pointeur spécial, HEAD, indique la branche courante.
55
56. Lors des commits suivants seul le pointeur de la branche actuelle va se déplacer.
56
57. Deux cas se présentent en général
1. La branche qui va recevoir la fusion est un ancêtre de la branche à fusionner
2. La branche qui va recevoir la fusion n'est pas un ancêtre de la branche à
fusionner
57
58. Ce cas est très simple, la fusion revient simplement à déplacer le curseur de la
branche recevante sur l'instantané pointé par la branche à fusionner.
58
Cas 1: La branche qui va recevoir la fusion est un ancêtre de la branche à fusionner
Avant fusion Après fusion
59. Ce cas est potentiellement compliqué car certains fichiers ont pu être modifiés dans
les deux branches, il va falloir fusionner ces fichiers via un nouvel instantané.
59
Cas 2: La branche qui va recevoir la fusion n'est pas un ancêtre de la branche à fusionner
Avant fusion Après fusion
60. Plus on reste loin de la branche principale, plus la fusion avec celle-ci sera
risquée.
Bonnes pratiques:
Il est prudent de travailler sur des fonctionnalités de petites tailles
Chaque fois que l’on recommence à travailler sur un projet, il est important de
commencer par se synchroniser avec la dernière version
Pour éviter les risques de fusion, certaines méthodologies – radicalement opposées
à Gitflow – se basent sur un travail direct dans le trunk (Trunk Based Developpement)
60
Remarque générale
61.
62. La branche courante est indiquée dans l’explorateur de projets au niveau du
nœud projet.
Par convention, la 1ère branche s'appelle master.
62
63. Pour créer une nouvelle branche et basculer dessus :
1. A partir du menu contextuel du projet,
sélectionnez Team > Switch To > New Branch…
2. Dans la fenêtre qui s’ouvre, indiquez le nom de la
branche et cliquez sur Finish
63
1
2
64. Créez une branche nommée develop
Le nœud projet indique désormais develop comme branche actuelle.
Dans la vue History, les deux branches master et develop apparaissent
désormais au niveau du dernier commit. La branche courante est en gras.
64
65. Créez de la même manière une branche feature_MaFonction et basculez dessus
Remarque : le fichier fichier3.txt est présent dans la nouvelle branche
65
66. Pour basculer d’une branche à l’autre, il
suffit
• d’utiliser le menu contextuel du projet.
Team > Switch To
• de choisir la branche voulue
La bascule est très rapide car
totalement locale.
66
67. Dans fichier1.txt ajoutez une nouvelle ligne (Ligne ajoutée dans MaFonction)
Ajoutez un fichier fichier4.txt avec comme contenu la ligne Contenu du fichier4.txt
Commitez le fichier 1 et le fichier 4 avec un commentaire identifié (modification
pour MaFonction)
On voit que les branches develop et master sont en retard
67
68. Basculez sur la branche develop (le
fichier fichier1.txt est affiché dans son état
antérieur, le fichier fichier4.txt absent)
Dans le menu contextuel du projet, choississez
Team > Merge …
68
69. Dans la fenêtre qui apparaît, sélectionnez la
branche feature_MaFonction.
Cliquez sur Merge. (en conservant les options par
défaut)
Fermez la fenêtre de confirmation
69
1
2
70. 1. Dans la fenêtre qui apparaît, sélectionnez la
branche feature_MaFonction.
2. Cliquez sur Merge. (en conservant les options par
défaut)
3. Fermez la fenêtre de confirmation
70
1
3
2
71. Le fichier 1 modifié et le fichier 4 sont bien présents
En fait Git n'a fait que déplacer le pointeur de la branche develop sur la
branche feature_MaFonction
71
72. Basculez sur la branche master
Créez une branche Hotfix_1 (à partir de master) et basculez sur elle
72
Bouton permettant
d'afficher toutes les
branches même les
plus récentes...
73. Dans le fichier fichier1.txt ajouter une ligne Correction hotfix 1
Commitez ce fichier
Revenez sur master
Mergez la branche Hotfix_1 (c’est un Fast Forward !)
Basculez sur develop
73
74. Supprimez le fichier fichier3.txt (juste pour simplifier)
Demandez la fusion avec la branche Hotfix_1
Il y a dans ce cas, un conflit avec les deux versions de fichier1.txt (il a été modifié
dans chacune des branches)
Dans l’arborescence, le fichier fichier1.txt apparait avec l’icône indiquant un conflit
74
75. Le fichier apparait de même dans la vue Git Staging
Lorsqu’on clique sur le fichier à partir de cette vue, Eclipse nous propose un
éditeur nous permettant de visualiser graphiquement les différences
75
76. Lorsqu’on ouvre le fichier directement le fichier à partir de l’arborescence projet
on voit que pour l’instant Git à modifié le contenu du fichier assez brutalement.
Cette vision est moins esthétique que l’éditeur graphique mais elle est plus efficace
à manipuler.
76
Lignes 1 et 2 : partie commune
Lignes 3 à 5: lignes correspondant à
l’ajout fait sur le HEAD (develop)
Lignes 5 à 7: lignes venant de la
branche Hotfix_1
77. La résolution du conflit doit être effectuée manuellement par le
développeur.
Par exemple:
Une fois sauvé, le fichier doit être ajouté à la zone de transit
Le conflit est alors résolu.
77
78. Git propose par défaut un message de commit adapté
Modifiez fichier1.txt pour résoudre le conflit, ajoutez le à l’index et commitez
78
79. Git propose par défaut un message de commit adapté
Modifiez fichier1.txt pour résoudre le conflit, ajoutez le à l’index et commitez
79
80. La situation est alors la suivante :
Notez la présence du commit de fusion.
80
81. Les branches Hotfix_1 et feature_MaFonction sont des
branches temporaires. Elles peuvent être supprimées.
La suppression d’une branche peut s’effectuer
1. Via le menu contextuel du projet: Team > Advanced >
Delete Branch…
2. Puis en sélectionnant la branche à supprimer
81
1
2
82. Supprimez les branches Hotfix_1 et feature_MaFonction
Remarque: Git vous avertit si vous tentez de supprimer une branche n'ayant jamais
été fusionnée
82
83.
84. Objectifs
Les dépots vont permettre aux développeurs de partager leur travail.
Ils peuvent aussi servir de dépôt de référence pour l'intégration continue
Git offre beaucoup de souplesse dans la gestion des dépôts distants :
Nature (cloud, disque partagé, clé usb...)
Protocole (SSH, Git, HTTPS...)
Nombre (utilisation de plusieurs dépôts...)
Structure (communication directe entre développeur, serveur central ...)
Dans notre exercice nous allons créer un dépôt distant ...local au poste de travail.
84
85. Créez un répertoire temporaire (ex: c:tempodemo)
Dans ce répertoire, créez un répertoire monDepotGit.git
Entrez dans le répertoire avec un terminal (Git bash par exemple)
Tapez la commande git init --bare
85
86. Remarques:
Par convention, le nom des dépôts Git finit par .git
On voit, en inspectant le contenu du dépôt que Git à initié un certains
nombre d’éléments (le HEAD, les refs, …)
On voit également que ce dépôt utilise par défaut une branche master.
86
87. Un moyen simple de se connecter à un dépôt est de faire un push d’une branche
existante à partir du menu contextuel du projet.
Initiez la demande de push sur la branche develop
87
92. Remarques
origin est le nom d'usage pour le serveur distant central.
L'URL indique le protocole de connexion :
HTTPS : https://github.com/francoisandre/gtdrosea_workshop.git
SSH : git@github.com:francoisandre/gtdrosea_workshop.git
92
93. Nous allons récupérer le projet à partir du dépôt distant pour simuler un deuxième
développeur. Pour cela nous allons lancer un deuxième Eclipse, dans un deuxième
workspace.
93
Ajout de la vue Git Repository
1
2
98. Dans le workspace du deuxième développeur, créez un fichier fichier5.txt avec
comme contenu Contenu du fichier fichier5.txt
Faites un commit de ce fichier, mais dans la vue Git Staging
• Indiquez comme auteur Developpeur 2
• Choisissez l'option Commit and push...
Fermez la fenêtre de confirmation
98
99. Dans le workspace du premier développeur récupérez
le nouveau contenu du dépôt distant:
Via le menu contextuel du projet, sélectionnez
Team > Pull
Fermez la fenetre de confirmation
99
100. Le contenu du commit est désormais récupéré sur le poste du premier
développeur
Git permet d’identifier les développeurs à l’origine de chaque modification
Ce cycle de pull/commit/push est l’élément fondamental du travail avec Git
100
101. Il est possible d’avoir plusieurs remotes pour un même projet. Cela permet de
travailler directement entre sous-équipes.
Avec les remotes, les développeurs vont être confrontés aux problèmes classiques
de fusions, vus précédemment
Des nouveaux problèmes vont apparaître : suppression de branches distantes, ...
101
102.
103. Git propose des fonctionnalités avancées comme le Rebase (modification de
l’historique), les hooks, …
Ces ressources permettent d’avancer dans sa maîtrise de Git.
Pro Git (par Scott Chacon)
• Ouvrage de référence
• Disponible gratuitement en français : https://git-scm.com/book/fr/v2
(différents formats: pdf, html, epub...)
Tutoriel(s)
• http://www.grafikart.fr/formations/git
103