Introduction à GIT
Cet énoncé a été conçu pour des groupes qui n'ont pas vraiment commencé à utiliser leur dépôt git.
Il est donc possible que certaines actions soient inutiles.
Définition de l'environnement
-
Pour que l'on sache qui commit :
git config --global user.name myusername
Pour que l'on ait son adresse :
git config --global user.email myemail
Vous désactivez la vérification SSL
git config --global http.sslVerify false
-
Pour les étudiants qui utilisent leur ordi perso, il est possible que vous ayez besoin de, ouvrir un Git CMD en administrateur, puis taper la commande suivante:
git config --system --unset credential.helper
TODO GIT INGONE
Gitignore
Un des étudiants du groupe de TD ajoute le fichier
.gitignore dans votre répertoire courant, i.e.
Dézipper le fichier.
-
git commit -a -m "ajout du .gitignore"
-
Tous les étudiants du groupe pour partir de la même version
-
Git comme un historique des modifications
Chaque étudiant du groupe a une tâche particulière, chacun choisit sa couleur : Blanc, Bleu, Vert, Jaune, Rouge
Créer un fichier contenant une classe vice en fonction de votre couleur (public class X {})
Comment interprétez-vous le résultat de la commande suivante
git status
Ajoutez votre fichier
X.java
comme git vous l'a dit :
git add X.java
Réinterprétez le résultat de la commande git status
.
Le fichier
X.txt
est maintenant prêt à être versionné.
git commit -m "construction de la class X"
ou
git commit
1) Quel message avez-vous en retour?
Que donne la commande git status
?
Apportez quelques modifications au fichier X.java
.
Blanc : ajouter l'attribut Date date
avec aussi import java.util.Date;
(Game)
Bleu : ajouter l'attribut String pseudo (Player)
Vert : ajouter l'attribut LocalTime time; (Move)
2)
Jaune : ajouter l'attribut int level (IA)
Rouge : ajouter la methode export (GameManager)
3)
Essayez de commiter ces modifications. Que se passe-t-il ? En vous aidant de la documentation accessible en tapant
git help commit
, versionnez ces modifications (avec un message décrivant le changement)
4)
Affichez l’historique des modifications du dépôt.
git log
Et pour voir les modifications apportées par le dernier commit
git log -p -1
et savoir qui fait quoi
git log --stat
ou
git log --pretty=format:"%h - %an, %ar : %s"
etc.
En utilisant
git diff
, visualisez les modifications effectuées entre le premier commit et le second commit. Par exemple
git diff 71cfcd6 0c24491
Attention l'ordre des commits modifie le résultat (un- devient un +).
Modifiez plusieurs fois votre fichier par exemple en ajoutant des commentaires afin d’en avoir plusieurs versions.
Le dernier commentaire ajouté ne vous plait finalement pas. Il existe deux manières de revenir à une version antérieure : de manière temporaire ou définitive.
Exécuter git log
et récupérez le hash (HASH) du commit où vous souhaitez revenir en arrière.
Pour revenir en arrière de manière temporaire, exécutez
git checkout HASH
Vérifiez que votre fichier est dans son état antérieur.
Revenez au dernier commit (HEAD) en exécutant
git checkout master
Pour revenir en arrière de manière définitive, et donc supprimer tout ce que vous avez fait depuis ce moment :
git reset --hard HASH
Dans git log
, vérifiez que tout ce que vous aviez effectué depuis ce commit a été effacé.
Synchronisation de votre répertoire en groupe
Hormis la première étape, vous avez expérimenté Git pour gérer localement vos versions.
Nous allons maintenant nous intéresser au développement collaboratif de fichier sources.
Visualisez les références distantes
git remote
Visualisez les
URL associées aux références distantes
git remote -v
BLANC envoie son code vers le dépôt distant :
git push origin master
Cette commande signifie : git push [nom-distant] [nom-de-branche]. Ici, nous souhaitons pousser votre branche master vers le serveur origin (pour rappel, cloner un dépôt définit automatiquement ces noms pour vous)
TOUS
Visualiser l'état du dépôt distant
git remote show origin
TOUS
Synchroniser votre dépôt git avec la commande
git pull
TOUS
Chacun pousse son code sur le dépôt distant
git push origin master
et si vous avez un souci… pensez à vous mettre à jour.
Chacun :
Bleu ajoute à Game
l'attribut “Player black”
Vert ajoute à Game
l'attribut “Move[] moves”
Blanc ajoute à GameManager
l'attribut “Game[] games”
Jaune ajoute à GameManager
l'attribut “IA[] ias”
Rouge ajoute à GameManager
la méthode Game createGame()
Tous commitent en local
Là vous faîtes ensemble et dans l'ordre en vous aidant :
Bleu pousse sur le serveur distant. (Pour lui c'est facile ! )
Vert tente de pousser… Remédiez au conflit.
Blanc pousse sur le serveur distant. Cool !
Jaune pousse sur le serveur distant ….
Rouge pousse sur le serveur distant…
Branches de développement
Cette partie n'est pas insdispensable à la gestion de votre projet tutoré de S2, à moins que votre groupe en ai décidé autrement
Nous allons travailler avec une branche chacun.
Les caractéristiques n'ayant pas encore été validées par votre client, vous souhaitez travailler sur celles-ci sans casser la version existante. La notion de branche permet de passer instantanément d’une version « stable » (branche « master » créée par défaut) du projet à une « version en cours de développement » (n’importe quelle autre branche que « master »
Jusqu'ici vous avez travaillé sur une seule branche « master » : c’est la branche principale, celle qui en général contient le « vrai » code source de votre projet. Pour voir toutes vos branches
git branch
Chacun :
Créez une branche de votre couleur <C> dans votre dépôt Git.
git branch C
Vérifiez que vous êtes bien dans la branche Master par la commande
git branch
Basculez dans la branche de C
git checkout C
Vérifiez dans quelle branche vous êtes
Ajoutez à la classe que vous avez créée initialement (Blanc→ Game, ect) ce que vous voulez puis commitez
Fermez votre fichier.
Observez l’historique des modifications du dépôt, que remarquez-vous ?
Revenez à la branche « master » et observez l’historique des modifications, que remarquez-vous ?
Vous souhaitez ajouter vos modifications à la branche master. Fusionnez (« merge ») la branche « C » à la branche « master ».
git merge C
Vérifiez que la fusion s'est bien passée.
Si vous avez un conflit, résolvez le conflit, pour cela dans le fichier en cause, identifiez les codes entre les balises de conflit (««< et »»>).
Commitez le changement (et donc la fusion) en tapant « git commit –a »
Références