====== Gestion de versions (Hands-on Git) ====== Un logiciel de contrôle de version permet de conserver un historique des modifications apportées sur des fichiers tout en offrant la possibilité de revenir à une version antérieure. Il existe des logiciels de contrôle de version centralisés et décentralisés. Dans le cadre des cours de //Conception et de Méthodologie de la production d’applications//, nous allons utiliser Git. /* ====== AVANT TOUT====== En ligne de commande avec l'outil Git: Lancez la commande: git config --global http.sslVerify false Retrouver le fichier de configuration ''.gitconfig'' situé dans votre répertoire personnel. Visualiser son contenu. Si besoin, configurer GIT pour que les commits se fassent bien à votre nom : git config --global user.name "prenom Nom" Puis votre e-mail : git config --global user.email moi@email.fr */ ===== I. A chacun son projet dans gitlab ===== - Connectez-vous à https://git-iutinfo.unice.fr/ (Compte de l'université :identifiant= //initiale + ...//) - Créez un projet (un par binôme au minimum) (bouton vert à droite "new project") , mettez le projet en public pour l'instant. - Ajoutez un de vos camarades à ce projet (vous pourrez revenir sur ce point plus tard). {{ :2018-2019:gitlab:ci:addmember.png?direct&200 |}} - Placez-vous bien dans le répertoire sur votre machine où vous désirez garder un lien avec le dépôt distant. - Dans le terminal : git config --global http.sslVerify false ((si vous n'avez pas "GIT" sur votre machine personnelle, vous pouvez passer au point III pour télécharger sourceTree qui contient Git puis suivez les instructions de Dorian sur Slack, à savoir : "Pour avoir la console Git pour ceux qui ont dl SourceTree, vous pouvez faire un raccourcis de git-bash ou git-cmd depuis C:\Users\\AppData\Local\Atlassian\SourceTree\git_local")) - Exécutez en ligne de commandes et comprenez **pas à pas** les instructions qui vous sont données sous ''détails'' pour définir la configuration globale et créer le dépôt {{ :2018-2019:gitlab:ci:instructioncreationdepot.png?direct&800 |}} et ce faisant **répondez aux questions suivantes** : - "git clone ..." qu'est-ce qui a été modifié dans votre répertoire (pensez aux fichiers cachés). - utilisez "git status" avant et après les instructions "git" pour expliquer ce qui change. - Sur le site web, vous constatez quelles modifications ? {{ :2018-2019:gitlab:ci:ajout_du_readme_2018-08-03_a_15.13.03.png?direct&300 |}} - Le fichier Readme.MD peut être modifié directement à partir du site web à présent.[[https://guides.github.com/features/mastering-markdown/|Pour mieux comprendre la syntaxe]] {{ :2018-2019:gitlab:ci:modify_readmemd_2018-08-03_a_15.31.14.png?direct&300 |}} - N'oubliez pas de ''commiter'' vos modifications. - Est-ce que le contenu du fichier a été modifié sur votre machine? - Exécutez la ligne de commande suivante git pull et maintenant que contient le fichier README sur votre machine? OK vous êtes prêts à synchroniser vos fichiers entre votre répertoire local et le dépôt distant. ===== II. Apprentissage de Git en lignes de commandes ===== Basé sur le TD élaboré par** Cyril Cecchinel** Et l'aide de [[https://openclassrooms.com/courses/gerez-vos-codes-source-avec-git|Open Classroom]] pour gérer les configurations. Une heure maximum sur cette partie. Si besoin laissez une partie pour la faire seul plus tard. Voir ici pour cette partie : [[2018_2019:s3:methodo:td:git:lignescommandes|Il faut lire plus loin que le 1.]] ===== III. Git au travers d'un outil dédié sourceTree ===== - www.sourcetreeapp.com - download - installer le .exe - Il vous faut un compte Bitbucket ou Atlassian mais vous pouvez vous connecter avec un compte google par exemple. - Désélectionner Mercurial nous ne l'utiliserons pas. - Clef SSH, vous pouvez dire non. - Pour vous connecter à gitlab : clone - récupérer l'adresse de votre dépôt git : {{ :2018-2019:gitlab:ci:clonegitlab.png?direct&300 |}} - la destination est celle sur votre machine, vous y retrouverez vos sources. {{:2018-2019:gitlab:ci:clone.png?300|}} - Initialiser votre dépôt en git-flow (Flux Git en haut à droite) {{:2018-2019:gitlab:ci:capture_d_ecran_3_.png?300|}} - Noter que vous pouvez aussi utiliser les "repository" de projets (bouton add) lorsque vous avez plusieurs projets à gérer en parallèle (par exemple, plusieurs projets github, différents dépôts pour l'IUT, différents dépôts pour vos projets personnels ect.) ===== IV. Utilisation de gitflow ===== Attention cette partie s'appuie sur SourceTree qui doit donc être installé sur votre machine ! [[https://medium.com/@budioktaviyans/how-to-make-a-git-flow-using-sourcetree-20ab77fe6813|Suivre le tutoriel gitflow]] ===== Cheat-Sheet ===== C'est juste un résumé ! ==== Création/Synchronisation ==== * Création d’un repo Git local $ git init myRepo Initialized empty Git repository in /private/tmp/myRepo/.git/ * Cloner un repo Git distant $git clone * Ajouter une cible (ie. Un serveur distant) – cette opération est implicite si le repo a été initialisé avec git init $ git remote add origin * Pousser les commits locaux de la branche master sur un serveur distant (origin) $ git push master origin * Se synchroniser avec un serveur distant (ie. Récupérer les commits distants) $ git pull ==== Commiter des modifications ==== * Afficher l’état courant du repo local $ git status * Versionner un nouveau fichier $ git add * Commiter un état courant avec un message de commit $ git commit -m "Premier commit" [master (root-commit) b992814] Premier commit 1 file changed, 5 insertions(+) create mode 100644 Menu.txt * Afficher l’historique du repo $ git log ==== Utiliser des branches ==== - Créer une branche $ git checkout -b vegetarien Switched to a new branch 'vegetarien' - Basculer sur une branche existante $ git checkout master Switched to branch 'master' - Supprimer une branche existante $ git branch –d japonais - Lister les branches existantes $ git branch master * vegetarien - Merger (i.e. fusionner) une branche dans la branche courante $ git merge vegetarien ==== Les tags ==== * Créer un tag léger $ git tag michelin17 * Lister les tags $ git tag michelin17 * Pousser un tag sur un serveur distant $ git push origin michelin17 Total 0 (delta 0), reused 0 (delta 0) To https://github.com/ulrich06/TD_Git.git - [new tag] michelin17 -> michelin17 * Pousser tous les tags sur un serveur distant git push origin --tags Maintenant [[2018_2019:s3:methodo:td:env|{{fa>angle-double-right?50|Gestion de version}}]]** Je peux aborder la** [[2018_2019:s3:methodo:td:ci|Intégration continue]] ==== Ressources ==== * https://github.com/SocialGouv/tutoriel-gitlab * https://www.wax-interactive.com/fr-ch/automatiser-production-gitlab-2 * https://www.grafikart.fr/formations/git/git-flow * https://medium.com/@budioktaviyans/how-to-make-a-git-flow-using-sourcetree-20ab77fe6813 * https://openclassrooms.com/courses/gerez-vos-codes-source-avec-git#/id/r-1234195 * Pro Git, Scoot Chacon and Ben Straub https://git-scm.com/book/fr/v1 * Prise en main de Git : http://www-igm.univ-mlv.fr/~dr/XPOSE2008/git/ * Learning Git in 15 minutes : https://try.github.io/levels/1/challenges/1 * A successful git branching model : http://nvie.com/posts/a-successful-git-branching-model/ * L’étiquetage : https://git-scm.com/book/fr/v1/Les-bases-de-Git-%C3%89tiquetage * [[https://stackoverflow.com/questions/2745076/what-are-the-differences-between-git-commit-and-git-push/2745097#2745097|What are the differences between “git commit” and “git push”?]] // That’s all folks