Taille: 1632
Commentaire: Début
|
Taille: 7868
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
= Intro: CVS et autres SCM = | = Utiliser Git = |
Ligne 3: | Ligne 3: |
= CVS sur BDE = | <<TableOfContents>> |
Ligne 5: | Ligne 5: |
== Version Simple : commiter ses modifications aux fichiers versionnés == | == Qu'est-ce que Git ? == |
Ligne 7: | Ligne 7: |
Lorsqu'un administrateur effectue des changements aux fichiers versionnés sur le serveur, il doit commiter les modifications pour qu'elles soient sauvegardées dans l'historique. | Git est un logiciel de contrôle de version, c'est à dire qu'il permet de garder une trace des modifications effectuées sur un fichier dans le but de pouvoir suivre l'évolution du projet. |
Ligne 9: | Ligne 9: |
Si le fichier {{{machin.conf}}} dans le répertoire {{{/etc/exemple}}}, il doit entrer dans ce répertoire avec la commande {{{cd}}}, et entrer la commande | On peut donc (entre autres) : * enregistrer l'avancée du projet au fur et à mesure, * revenir à une version antérieure si besoin, * travailler sur le même projet dans des branches de développement différentes pour ne pas perturber une configuration qui fonctionne, * les recombiner à tout moment, * permettre le travail collaboratif sur un même dépôt disponible sur le réseau, * même si le dépôt distant est injoignable, travailler sur sa copie locale * ouvrir plus ou moins son projet au monde * filtrer les modifications venant de contributeurs inconnus à incorporer dans le projet Il en existe d'autres (CVS, Mercurial, Subversion, Bazaar ...), mais Git est à l'heure actuelle l'un des plus puissants d'entre eux. Git est disponible sur la plupart des systèmes courants (GNU/Linux, OS X, Windows), mais le fonctionnement des commandes exposées sur cette page n'est garanti que pour les systèmes GNU/Linux. Cette page a pour but d'exposer les commandes basiques pour l'utilisation de Git. == Installer Git == === GNU/Linux === Git est en général inclus dans l'installation de base du système. Si ce n'est pas le cas, vous pouvez (et même devez) utiliser le gestionnaire de paquets de votre distribution. Par exemple, pour Debian et ses dérivés (Ubuntu ...) {{{ # apt-get install git}}} === OS X === La procédure d'installation de Git se trouve ici : [[https://git-scm.com/book/fr/v1/D%C3%A9marrage-rapide-Installation-de-Git#Installation-sur-Mac|Installer Git sous OS X]] === Windows === La procédure d'installation de Git se trouve ici : [[https://git-scm.com/book/fr/v1/D%C3%A9marrage-rapide-Installation-de-Git#Installation-sur-Windows|Installer Git sous Windows]] == Indiquer à Git son identité == Avant de commencer, il faut indiquer à Git qui va faire les modifications sur le dépôt avec le compte utilisé. Le plus simple est de configurer son identité pour tous les dépôts de la machine : ce réglage n'a besoin d'être fait '''qu'une seule fois'''. Cela peut être fait avec les commandes suivantes : {{{ $ git config --global user.name "<prénom> <nom>" $ git config --global user.email <adresse mail>}}} == Initialiser un dépôt == Pour commencer, il faut d'abord initialiser un dépôt dans lequel on va pouvoir travailler. Un dépôt est simplement un dossier dans lequel se trouve un sous dossier {{{.git}}} que Git utilisera pour la gestion du dépôt. Ce sous-dossier a une structure spécifique et doit donc être généré par Git lui-même. {{{#!wiki caution '''Ne jamais toucher l'intérieur du dossier .git'''<<BR>> Vous risquez de casser de manière irréversible le système de suivi de votre dépôt}}} Le dossier en question peut être vide ou pas, cela ne gênera pas Git. |
Ligne 12: | Ligne 63: |
sudo cvs commit machin.conf | $ cd /chemin/vers/le/futur/dépôt $ git init Dépôt Git vide initialisé dans /chemin/vers/le/futur/dépôt/.git/}}} Vous pouvez alors taper la commande {{{git status}}} pour voir quels fichiers peuvent être suivis. Par exemple, si le dossier contenait un fichier test.py et un dossier test/, on aura {{{ Sur la branche master Validation initiale Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure ce qui sera validé) test.py test/ aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)}}} Vous pouvez ajouter ceux que vous voulez suivre avec la commande indiquée : {{{ $ git add test.py test/}}} ou si vous voulez tout suivre {{{ $ git add .}}} Il ne reste plus qu'à effectuer le premier "commit" de votre projet. Un commit est une entrée dans l'histoire de votre projet contenant les modifications apportées depuis le commit précédent. Vous pouvez le voir comme un point sur une frise chronologique. {{{ $ git commit}}} Votre éditeur de texte préféré s'ouvre alors, et vous pouvez taper un commentaire sur votre commit. Par exemple, {{{"Initialisation du projet"}}}. Il est également possible de tout taper dans une seule commande {{{git commit -m "Initialisation du projet"}}}. Vous devez obtenir quelque chose dans le style: {{{ $ git commit -m "Initialisation du projet" [master (commit racine) c890b54] Initialisation du projet 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.py}}} Voilà, votre dépôt Git est initialisé, l'état de vos fichiers à ce moment est enregistré, vous pouvez de nouveau travailler dessus. == Travailler dans son dépôt == === Enregistrer les modifications de fichiers déjà présents === === Ajouter de nouveaux fichiers ou dossiers === === Revenir à une version précédente d'un fichier === === Annuler un commit === === Retirer des fichiers du système de suivi === === Ignorer des fichiers ou des dossiers === == Avant de modifier des fichiers == Avant de pouvoir commencer à travailler, il faut déjà s'assurer que quelqu'un n'a pas laissé des modifications non sauvegardées dans le dépôts, et que le dépôt local est à jour avec le dépôt distant, s'il y en a un. === Vérifier que quelqu'un n'a pas laissé des modifications non commitées === Si quelqu'un travaillait dans le dépôt et n'a pas eu le temps de terminer son travail, il est possible de mettre ses modifications de côté avec git stash: * Vérifier l'état du dépôt . {{{ $ git status}}} * Stasher des modifs (les modification sont empilées, de telle sorte qu'il est possible de stasher plusieurs fois) . {{{ $ git stash}}} * Lister les stashs présents . {{{ $ git stash list}}} * Déstasher des modifs . {{{ $ git stash pop <nom du stash(optionnel)>}}} === Vérifier que son dépôt est en phase avec un dépôt distant === * Des commits sur le dépôt local peuvent ne pas avoir été pushé. Pour le vérifier : . {{{ $ git remote show}}} * Il est possible que d'autres gens aient travaillé sur le projet et aient apporté des changements qu'ils ont poussé vers le dépôt distant, il faut alors les importer : . {{{ $ git pull}}} * Pour un mélange des deux cas précédents : . {{{#!wiki caution '''Ne pas abuser de cette méthode'''<<BR>> Un rebase foireux peut vite devenir compliqué à gérer ! }}} . {{{ $ git pull --rebase}}} == Commiter ses modifications aux fichiers versionnés == Lorsqu'un changement est apporté aux fichiers versionnés sur le serveur, il doivent être mis à l'index avant d'être commités pour qu'elles soient sauvegardées dans l'historique. La commande {{{git status}}} permet d'indiquer les fichiers modifiés/non suivis. Si les modifications du fichier {{{chemin/vers/machin.conf}}} doivent être ajouté à l'index, il faut entrer la commande : {{{ $ git add chemin/vers/machin.conf |
Ligne 15: | Ligne 167: |
ou, si la commande est entrée sous le compte root | Plusieurs fichiers ou dossiers peuvent simultanément être ajoutés à l'index. Une fois les modifications indexées, il faut les commiter pour enregistrer les modifications. |
Ligne 18: | Ligne 172: |
cvs commit machin.conf | $ git commit |
Ligne 21: | Ligne 175: |
A ce moment un éditeur, en général {{{jed}}}, ouvre une zone d'édition où l'administrateur entre un message expliquant la modification concernée. | À ce moment un éditeur, en général {{{nano}}}, {{{vim}}} ou {{{emacs}}}, ouvre une zone d'édition où l'administrateur entre un message expliquant la modification concernée. |
Ligne 23: | Ligne 177: |
== Version compliquée : le fonctionnement de CVS sur le serveur du BdE == | Une fois la modification enregistrée en local, il faut la pousser vers un dépôt distant, s'il y en a un. |
Ligne 25: | Ligne 179: |
=== Les différents répertoires versionnés === | {{{ $ git push }}} |
Ligne 27: | Ligne 183: |
Sur le serveur du BdE, plusieurs répertoires parents sont maintenus par l'utilisation de CVS. Le premier et plus important est {{{/etc}}} . Comme sur tout système *nix il contient la configuration de la majorité des services utilisés sur le serveur.[[BR]] | |
Ligne 29: | Ligne 184: |
==== Apache ==== La configuration d'[http://httpd.apache.org/ Apache], le serveur web, est hébergée dans le répertoire {{{/etc/apache2}}}. Les fichiers importants se trouvent dans les répertoires {{{sites-available}}} et {{{conf.d}}}[[BR]] /!\ Ne jamais ajouter des fichiers du répertoire {{{sites-enabled}}} au CVS, ce sont des liens symboliques vers des fichiers de {{{sites-available}}} maintenus par les commandes d'administration {{{a2ensite}}} et {{{a2dissite}}}. |
= Pour aller plus loin… = [[CransNostalgie/ConcurrentVersionsSystem|Crans '''Nostalgie''' CVS]] [[CransTechnique/ServicesMineurs/Git|Git au Crans]] [[git-scm.com|Site officiel de Git]] |
Utiliser Git
Sommaire
Qu'est-ce que Git ?
Git est un logiciel de contrôle de version, c'est à dire qu'il permet de garder une trace des modifications effectuées sur un fichier dans le but de pouvoir suivre l'évolution du projet.
On peut donc (entre autres) :
- enregistrer l'avancée du projet au fur et à mesure,
- revenir à une version antérieure si besoin,
- travailler sur le même projet dans des branches de développement différentes pour ne pas perturber une configuration qui fonctionne,
- les recombiner à tout moment,
- permettre le travail collaboratif sur un même dépôt disponible sur le réseau,
- même si le dépôt distant est injoignable, travailler sur sa copie locale
- ouvrir plus ou moins son projet au monde
- filtrer les modifications venant de contributeurs inconnus à incorporer dans le projet
Il en existe d'autres (CVS, Mercurial, Subversion, Bazaar ...), mais Git est à l'heure actuelle l'un des plus puissants d'entre eux.
Git est disponible sur la plupart des systèmes courants (GNU/Linux, OS X, Windows), mais le fonctionnement des commandes exposées sur cette page n'est garanti que pour les systèmes GNU/Linux.
Cette page a pour but d'exposer les commandes basiques pour l'utilisation de Git.
Installer Git
GNU/Linux
Git est en général inclus dans l'installation de base du système. Si ce n'est pas le cas, vous pouvez (et même devez) utiliser le gestionnaire de paquets de votre distribution.
Par exemple, pour Debian et ses dérivés (Ubuntu ...)
# apt-get install git
OS X
La procédure d'installation de Git se trouve ici : Installer Git sous OS X
Windows
La procédure d'installation de Git se trouve ici : Installer Git sous Windows
Indiquer à Git son identité
Avant de commencer, il faut indiquer à Git qui va faire les modifications sur le dépôt avec le compte utilisé.
Le plus simple est de configurer son identité pour tous les dépôts de la machine : ce réglage n'a besoin d'être fait qu'une seule fois. Cela peut être fait avec les commandes suivantes :
$ git config --global user.name "<prénom> <nom>" $ git config --global user.email <adresse mail>
Initialiser un dépôt
Pour commencer, il faut d'abord initialiser un dépôt dans lequel on va pouvoir travailler. Un dépôt est simplement un dossier dans lequel se trouve un sous dossier .git que Git utilisera pour la gestion du dépôt. Ce sous-dossier a une structure spécifique et doit donc être généré par Git lui-même.
Ne jamais toucher l'intérieur du dossier .git
Vous risquez de casser de manière irréversible le système de suivi de votre dépôt
Le dossier en question peut être vide ou pas, cela ne gênera pas Git.
$ cd /chemin/vers/le/futur/dépôt $ git init Dépôt Git vide initialisé dans /chemin/vers/le/futur/dépôt/.git/
Vous pouvez alors taper la commande git status pour voir quels fichiers peuvent être suivis. Par exemple, si le dossier contenait un fichier test.py et un dossier test/, on aura
Sur la branche master Validation initiale Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure ce qui sera validé) test.py test/ aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)
Vous pouvez ajouter ceux que vous voulez suivre avec la commande indiquée :
$ git add test.py test/
ou si vous voulez tout suivre
$ git add .
Il ne reste plus qu'à effectuer le premier "commit" de votre projet. Un commit est une entrée dans l'histoire de votre projet contenant les modifications apportées depuis le commit précédent. Vous pouvez le voir comme un point sur une frise chronologique.
$ git commit
Votre éditeur de texte préféré s'ouvre alors, et vous pouvez taper un commentaire sur votre commit. Par exemple, "Initialisation du projet".
Il est également possible de tout taper dans une seule commande git commit -m "Initialisation du projet". Vous devez obtenir quelque chose dans le style:
$ git commit -m "Initialisation du projet" [master (commit racine) c890b54] Initialisation du projet 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.py
Voilà, votre dépôt Git est initialisé, l'état de vos fichiers à ce moment est enregistré, vous pouvez de nouveau travailler dessus.
Travailler dans son dépôt
Enregistrer les modifications de fichiers déjà présents
Ajouter de nouveaux fichiers ou dossiers
Revenir à une version précédente d'un fichier
Annuler un commit
Retirer des fichiers du système de suivi
Ignorer des fichiers ou des dossiers
Avant de modifier des fichiers
Avant de pouvoir commencer à travailler, il faut déjà s'assurer que quelqu'un n'a pas laissé des modifications non sauvegardées dans le dépôts, et que le dépôt local est à jour avec le dépôt distant, s'il y en a un.
Vérifier que quelqu'un n'a pas laissé des modifications non commitées
Si quelqu'un travaillait dans le dépôt et n'a pas eu le temps de terminer son travail, il est possible de mettre ses modifications de côté avec git stash:
- Vérifier l'état du dépôt
$ git status
- Stasher des modifs (les modification sont empilées, de telle sorte qu'il est possible de stasher plusieurs fois)
$ git stash
- Lister les stashs présents
$ git stash list
- Déstasher des modifs
$ git stash pop <nom du stash(optionnel)>
Vérifier que son dépôt est en phase avec un dépôt distant
- Des commits sur le dépôt local peuvent ne pas avoir été pushé. Pour le vérifier :
$ git remote show
- Il est possible que d'autres gens aient travaillé sur le projet et aient apporté des changements qu'ils ont poussé vers le dépôt distant, il faut alors les importer :
$ git pull
- Pour un mélange des deux cas précédents :
Ne pas abuser de cette méthode
Un rebase foireux peut vite devenir compliqué à gérer !
$ git pull --rebase
Commiter ses modifications aux fichiers versionnés
Lorsqu'un changement est apporté aux fichiers versionnés sur le serveur, il doivent être mis à l'index avant d'être commités pour qu'elles soient sauvegardées dans l'historique.
La commande git status permet d'indiquer les fichiers modifiés/non suivis.
Si les modifications du fichier chemin/vers/machin.conf doivent être ajouté à l'index, il faut entrer la commande :
$ git add chemin/vers/machin.conf
Plusieurs fichiers ou dossiers peuvent simultanément être ajoutés à l'index.
Une fois les modifications indexées, il faut les commiter pour enregistrer les modifications.
$ git commit
À ce moment un éditeur, en général nano, vim ou emacs, ouvre une zone d'édition où l'administrateur entre un message expliquant la modification concernée.
Une fois la modification enregistrée en local, il faut la pousser vers un dépôt distant, s'il y en a un.
$ git push