Source Code Management Interest Group Tools and procedures used in the yacs project

PreviousNextIndex

Les bases Git avec SmartGit

Pour apprendre à utiliser Git via SmartGit (sous Windows), j'ai fait l'exercice de reprendre ci-dessous le didacticiel réalisé par Alexis et consultable sur Cybermédium : http://www.cybermedium.info/article-48-utilisez-git-pour-maintenir-vos-scripts-yacs

Initialisation du répertoire de travail

Lancer SmartGit. Une fenêtre d'accueil propose de créer un nouvel arbre de travail local Git:

Sélectionner le répertoire de travail :

Couper_2.jpg

Confirmer l'initialisation de l'arbre de travail :

Couper_3.jpg

Indiquer le nom du projet géré par Git :

Couper_4.jpg

SmartGit affiche alors le contenu du projet :

Couper_5.jpg

GIT a créé un répertoire caché .git à la racine du répertoire de travail, et stockera ses données dedans. Aucun autre fichier n'est placé ailleurs.

Couper_6.jpg

Ajouter des fichiers

Si votre répertoire est vide, il faut créer ou copier des fichiers dedans. Faites cela avec votre moyen préféré.

Pour l'exemple, j'y copie le fichier testgit.html proposé par Alexis : http://www.cybermedium.info/file-fetch/7-testgit-html.zip

Le fichier apparaît maintenant dans la liste des fichiers affichée dans SmartGit:

Couper_7.jpg

SmartGit nous dit que le fichier est présent mais non indexé (Untracked = non pisté).

Cliquer sur la ligne du fichier pour le sélectionner puis cliquer sur le bouton Stage :

Le nouveau fichier est maintenant suivi (ajouté à l'index, un espace temporaire).

On peut ajouter tous les fichiers du répertoire par le menu Edit / Select Commitable Files (Ctrl+Maj+A).

Commiter les changements

Il ne reste plus qu'a "commiter" :

Indiquer un message qui doit accompagner tout commit :

Noter le changement d'état du fichier commité :

Branching

Maintenant nous allons faire de nouvelles modifications, mais dans une branche. Il est extrêmement facile avec GIT de créer une branche, puis de fusionner ses développements plus tard avec une autre branche. Aussi il ne faut pas hésiter à créer de multiples branches pour vos développements.

On crée une branche ainsi :

Donner un nom à la nouvelle branche (ici "experience"):

Vous pouvez lister les branches existantes via le menu Branch / Branch Manager :

La branche en gras (master) est la branche active. La branche créée par défaut s'appelle master.

On change de branche active via le menu Branch / Switch...:

Sélectionner la branche désirée puis cliquer sur Switch.

Maintenant, faisons de nouvelles modifications dans le fichier testgit.html en le sélectionnant dans la liste puis en choisissant Open dans le menu contextuel obtenu en cliquant dessus avec le bouton droit de la souris.

Dans l'éditeur qui s'ouvre, ajouter la ligne <link rel="stylesheet" type="text/css" href="style.css" media="all" /> :

Noter le changement d'état du fichier qui devient Modified ainsi que la visualisation des modifications dans le comparateur de version :

Remarque : par défaut, c'est le programme Notepad qui est utilisé comme éditeur. Voici comment en définir un autre :

Ajoutons maintenant le fichier style.css fourni par Alexis :

http://www.cybermedium.info/file-fetch/6-style-css.zip

On sélectionne tous les fichiers commitables via le menu Edit / Select Commitable Files (Ctrl+Maj+A) puis l'on commite. Les fichiers sont repassés à l'état Unchanged :

Visualiser la page testgit.html dans un navigateur, voici ce qui s'affiche :

Retourner sur la branche master via le menu Branch / Switch... puis recharger la page dans votre navigateur...:

Surprise ! La feuille de style n'est plus appliquée. Regardez vos fichiers : le nouveau fichier CSS a disparu et le contenu de testgit.html est revenu à l'état initial.

Retourner sur la branche experience : les modifications réapparaissent. En fonction de la branche active, GIT change dynamiquement le contenu de votre répertoire de travail.

Merging

Faisons d'abord des nouvelles modifications sur la branche master (switcher dessus) en remplaçant le contenu du fichier testgit.html par :

<p> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"</p>
<
p>    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"></p>
<
p><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"></p>
<
p><head></p>
<
p>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   </p>
<
p>    <title>Test pour GIT</title></p>
<
p></head></p>
<
p><body></p>
<
p>    <h1>/(bb|[^b]{2})/</h1></p>
<
p>    <div></p>
<
p>        <span>.-"""-.</span><span>/ _  _ \</span></p>
<p>        <span>??  ](_' `_)[  ??</span><span>`-. N ,-'</span></p>
<p>        <span>|===|</span><span>`---'</span></p>
<p>    </div></p>
<p></body></p>
</html>

Commiter le fichier modifié. Chaque branche contient maintenant des modifications différentes.

Fusionnons experience dans master à l'aide du bouton Merge :

Afficher toutes les branches, sélectionner experience puis merger :

Un message indique un conflit

Parfois, GIT ne peut pas se dépatouiller tout seul avec des modifications contradictoires. Dans ce cas, il signale un conflit et place un marquage spécial à l'intérieur du fichier. A vous de résoudre le conflit en éditant le fichier. Le comparateur de fichiers indique l'endroit du conflit :

Voici comment j'ai procédé pour résoudre le conflit (sans trop savoir s'il s'agit de la bonne méthode... ). Ouvrir le fichier html et y mettre la version finale désirée. Dans SmartGit, Stager le fichier html puis le commiter.

On peut retrouver l'historique des modifications du fichier en le sélectionnant dans la liste puis en cliquant sur le bouton Log :

Un graphique permet de visualiser les modifications :

PreviousNextIndex