Projet

Général

Profil

Utilisation de Git

Adresse du dépôt git : LOGIN@scm.centrale-marseille.fr:/srv/git/PROJET/default.git

Pour ajouter des utilisateurs au projet, il faut se rapprocher du CRI. Pour deux raisons :

  • Les utilisateurs doivent être connus de Redmine
  • Les utilisateurs doivent avoir les droits de commit. Ceci implique d’être dans le bon groupe Unix.

L’encodage par défaut du dépôt est UTF-8. Faîtes-y attention surtout si l’encodage de votre système est différent (Vous êtes sous Windows ou linux > 10 ans).

Pour avoir une présentation de git et quelques commandes de base : http://www.llaumgui.com/public/slides/git-github-social-codding/\#/

git sous Linux et autres Unix

Installer git sous Linux

Git devrait être présent dans les dépôts de votre distribution. Installez-le comme un autre logiciel. Il existe de nombreuses interfaces graphiques tel que la très complète cola-git ou la moins développée qgit.

Utiliser git sous linux

Classiquement, sous linux, on utilise git en ligne de commande. Voir comment cloner le dépôt et les commandes basiques de git. Vous pouvez également utiliser l’une des interfaces plus ou moins complètes citées ci-avant.

git sous Windows

Installer git sous Windows

Il faut tout d’abord installer git, puis installer une interface à git qui facilite sont utilisation en environnement non Unix.

Pour installer git, téléchargez msysgit par ici. Installez le avec les paramètres par défaut (ne pas toucher aux composants à installer, puis sur les écrans suivant : Use Git Bash only, Use OpenSSH et Checkout Windows-style, commit Unix-style line endings).

Vous avez alors un environnement qui vous permet d’utiliser git en ligne de commande via Git bash ou en mode graphique (mais de façon assez basique) via Git GUI.

Nous allons maintenant créer des clés ssh. Ces clés vont vous permettre d’utiliser git facilement sur les serveurs de l’école. Vous pouvez passer cette étape et toutes celles concernant ssh pour une installation en local. Remplacez LOGIN par votre login CAS de Centrale Marseille. Pour générer les clés :

  1. Lancez Git Bash
  2. Tapez les commandes suivantes dans l’interpréteur :

# Pour générer la clé, en laissant les options par défaut (appuyer trois fois sur Entrée) : ssh-keygen -C LOGIN
# Pour copier la clé sur le serveur (attention aux apostrophes). Si c’est la première fois que vous vous connectez au serveur, il vous sera demandé d’accepter sa clé. Répondez yes le cas échéant. : cat ~/.ssh/id_rsa.pub | ssh LOGINsas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'@
# Tester que tout va bien avec : ssh LOGINsas1.centrale-marseille.fr@. On ne vous demande pas votre mot de passe et vous devriez tomber dans une invite de commande. Il est possible que vous ayez à entrer votre passphrase. Pour plus d’infos voir utilisation de SSH sous Unix.

Pensez à sauvegarder sur un support sécurisé le dossier .ssh. Il contient votre clé privée à ne pas diffuser et votre clé publique

Afin de vous faciliter la vie, installez également TortoiseGit. C’est une interface à git grâce à laquelle vous pourrez utiliser git et vos clés ssh plus facilement. Téléchargez le logiciel (disponible en version 32 et 64 bits) ici et installez-le avec les options par défaut. Pour le configurer, faîtes un clic droit dans un dossier ou sur votre bureau, puis allez dans TortoiseGit > Settings. Entrez :

  1. Le chemin vers msysgit (si vous l’avez installer ailleurs que dans le chemin par défaut)
  2. Dans l’onglet Network, entrez /bin/ssh.exe dans le champ SSH client
  3. Dans l’onglet git, entrez votre nom et votre adresse mail.
  4. Utilisateurs avancé : sous l’onglet git, vous pouvez éditer votre .gitconfig directement.
  5. Enregistrez

Utilisez git sous Windows

Pour cloner un dépôt : utilisez Git Gui (TortoiseGit renvoie une erreur lorsque vous tentez de cloner avec ssh) :

  1. Lancer Git GUI
  2. Cliquez sur cloner un dépôt
  3. Dans source entrez : ssh://LOGINscm.centrale-marseille.fr/srv/git/NOM_DE_VOTRE_PROJET/default.git
  4. Dans Destination entrez le chemin du dossier dans lequel vous voulez cloner le dépôt.
  5. Clonez

Pour toute les autres opérations, TortoiseGit fonctionne très bien. Faîtes un clic droit dans le dossier ou sur un fichier et vous aurez sous le menu TortoiseGit toutes les options disponibles : git pull pour récupérer les données depuis le serveur, git push pour les envoyer (toujours faire un git pull avant de faire un git push pour éviter les conflits sur le serveur), git commit pour enregistrer vos modifications dans git,…

Configurer son environnement

Quelques alias pratiques et options de configuration à saisir une bonne fois pour toute.

<code>
git config --global user.name "name"
git config --global user.email "mail@mail.mail"

git config --global core.editor "vim" // ou emacs ou... votre éditeur préféré. 
git config --global core.fileMode false // Si vous voulez ignorer les modifications de permissions de fichier.

git config --global color.ui true

git config --global branch.autosetuprebase always // Pour appliquer par défaut l'option --rebase

git config --global alias.st 'status'
git config --global alias.co 'checkout'
git config --global alias.up 'pull --rebase'
</code>

Liens complémentaires

Pour cloner le dépôt

  1. Placez-vous là où vous voullez cloner le dépôt
  2. Tapez : git clone ssh://LOGIN@scm.centrale-marseille.fr/srv/git/PROJET/default.git .

Commandes basiques de git

  • Pour récupérer les "nouveautés" : git pull
  • Pour envoyer ses modifications : git push

    TOUJOURS faire un pull et régler les éventuels conflits en local avant de faire un push

    Faire un pull --rebase permet de se placer au-dessus de tout les commits précédents et de garder un dépôt "propre".

  • Pour ajouter un fichier au projet : git add
  • Pour enregistrer les modifications : git commit
  • Pour plus de détails : http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git

Fonctionnalités à connaître et exemples d’utilisation

Les branches

Les branches représentent l’une des fonctionnalités les plus puissantes de git. Par défaut toutes les modifications sont faites dans la branche master. C’est la branche principale de votre projet.

L’intérêt des branches est de pouvoir faire de grosses modifications en parallèle sans modifier le code principal. Par exemple, vous voulez implémenter une super idée. Mais super idée va vous demander du temps de développement et de nombreuses modifications dans votre code. Il serait dommage de paralyser la correction de bug et les petites modifications le temps que super idée soit terminée. C’est là que les branches interviennent : vous créez une nouvelle branche et tous les fichiers seront temporairement remplacés par ceux de cette branche.

Vous pouvez à tous moment réintégrer les modifications d’une branche dans master. Vous pouvez également abandonner une branche.

En somme, il devient intéressant de créer une nouvelle branche lorsque :

  1. La modification est longue
  2. La modification est compliquée
  3. L’implémentation de la modification reste un peu floue

Voici les commandes principales associées aux branches :

  • Pour voir toutes vos branches locales, utilisez : git branch. La branche marquée d’une étoile est la branche courante.
  • Pour créer une nouvelle branche : git branch LE_NOM_DE_MA_BRANCHE.
  • Pour changer de branche : git checkout LE_NOM_DE_MA_BRANCHE

    Vous devez avoir commité toutes vos modifications avant de changer de branche

  • Pour ajouter les changements dans master : git checkout master ; git merge LE_NOM_DE_MA_BRANCHE
  • Pour supprimer une branche : git branch -d LE_NOM_DE_MA_BRANCHE

    Cette commande vérifie avant la suppression que les changements ont bien été ajoutés dans master. Pour supprimer une branche sans cette vérification, utilisez git branch -D LE_NOM_DE_MA_BRANCHE

Il est évidemment possible de travailler à plusieurs sur une branche autre que master. Pour avoir la liste des branches connues par le serveur, utilisez git branch -r. Pour récupérer cette branche en local : git branch --track NOM_BRANCHE_LOCAL origin/NOM_BRANCHE_SERVEUR.

Lorsque vous faîtes un pull, seule la branche dans laquelle vous vous trouvez est synchronisée depuis le serveur

Pour ajouter une nouvelle branche sur le serveur, utilisez : git push origin origin:refs/heads/NOM_NOUVELLE_BRANCHE. Vous pouvez ensuite suivre cette branche avec la commande précédente. Si vous avez tout d’abord créé votre branche en local et que vous désirez l’envoyer sur le serveur :

  1. Créez la branche sur le serveur
  2. Ouvrez .git/config
  3. Copiez la partie [branch "master"]
  4. Remplacez toutes les occurences de "master" par le nom de votre branche
  5. git pull
  6. git push
  7. Normalement, tout est à jour.

Pour supprimer une branche sur le serveur : git push origin :heads/NOM_BRANCHE_A_SUPPRIMER, puis git branch -r -d origin/NOM_BRANCHE_A_SUPPRIMER pour que la branche ne soit plus listée.
Plus d’infos ici

Les tags

Pour recherche une version plus facilement, vous pouvez tagger un commit avec git tag NOMTAG IDCOMMIT. Vous pourrez ensuite vous référer à ce commit à l’aide de NOMTAG.

Par défaut les tags ne sont pas envoyés lors d’un push. Utilisez git push --tag

La recherche

Grâce à la commande git grep "PATTERN", vous pouvez recherche dans vos fichiers sources.

Ignorer des fichiers

Si vous désirez que certains fichiers ne soient pas pris en compte par git (fichier de sauvegarde de votre éditeur de texte par exemple), créez un fichier .gitignore dans le dossier de votre dépôt. Ajoutez dans ce fichier le nom des fichiers à ignorer (1 par ligne).