Utilisation de Git et GitLab
(→Travailler avec un dépôt distant et GitLab) |
(→Travailler avec Git en local) |
||
Line 34: | Line 34: | ||
# ignorer tous les fichiers .txt sous le répertoire doc/ |
# ignorer tous les fichiers .txt sous le répertoire doc/ |
||
doc/**/*.txt |
doc/**/*.txt |
||
+ | # Don't ignore .gitignore |
||
+ | !.gitignore |
||
Autres exemples sur [https://github.com/github/gitignore]. Penser aux fichiers *~ et *.lock. |
Autres exemples sur [https://github.com/github/gitignore]. Penser aux fichiers *~ et *.lock. |
||
Line 59: | Line 61: | ||
git branch -b nom-de-la-branche pour faire les deux d'un coup |
git branch -b nom-de-la-branche pour faire les deux d'un coup |
||
git branch -d nom-de-la-branche pour la supprimer |
git branch -d nom-de-la-branche pour la supprimer |
||
+ | |||
+ | * '''Différence entre des branches''': |
||
+ | git diff branche1..branche2 pour une différence dans les deux sens |
||
+ | git diff branche1...branche2 pour les modifications non commités dans la branche1 |
||
===La bonne pratique pour travailler avec les branches=== |
===La bonne pratique pour travailler avec les branches=== |
Revision as of 14:36, 23 August 2016
Contents |
Références
Mémo d'utilisation de Git
Travailler avec Git en local
- Initialisation d'un dépôt :
dans le répertoire existant du logiciel taper :
git init
- Ajouter des fichiers pour suivre leur version :
taper
git add nom-du-fichier
puis
git commit -m 'version initiale du projet'
git add permet d'ajouter (indexer) les fichiers au projets (possible d'ajouter tout avec git add *).
git commit permet d'enregistrer (valider) les modifications (l'option –amend permet d'annuler le commit).
ATTENTION : toujours inspecter les modifications pour savoir si tout est bien indexé en tapant la commande git status.
- Se définir un patron de travail :
renseigner un fichier .gitignore pour éviter d'indexer ou de valider ce qu'on ne veut pas, exemple :
# un commentaire, cette ligne est ignorée # pas de fichier .a *.a # mais suivre lib.a malgré la règle précédente !lib.a # ignorer uniquement le fichier TODO à la racine du projet /TODO # ignorer tous les fichiers dans le répertoire build build/ # ignorer doc/notes.txt, mais pas doc/server/arch.txt doc/*.txt # ignorer tous les fichiers .txt sous le répertoire doc/ doc/**/*.txt # Don't ignore .gitignore !.gitignore
Autres exemples sur [1]. Penser aux fichiers *~ et *.lock.
- Supprimer ou déplacer un fichier :
git rm nom-du-fichier git mv nom-du-fichier
Les fichiers indexés qui feront parties de la prochaine validation :
git diff --staged
- Obtenir des infos sur la version actuelle du projet :
git log
(git log -p -2 permet de voir les différences avec les 2 commits précédents)
- Lister et créer des étiquettes pour les versions stables :
git tag pour lister les étiquettes. git tag -a v1.4.0 -m 'Version 1.4.0' pour ajouter une étiquette au dernier commit.
Rappel – règles pour les étiquettes : vA.B.C avec A=version majeure, B=version mineure, C=correctif On commence la numérotation à 0. On réserve A=0 pour le protoype, A=1 est la première version stable.
- Manipuler des branches:
git branch nom-de-la-branche pour créer une nouvelle branche git checkout nom-de-la-branche pour basculer sur cette nouvelle branche git branch -b nom-de-la-branche pour faire les deux d'un coup git branch -d nom-de-la-branche pour la supprimer
- Différence entre des branches:
git diff branche1..branche2 pour une différence dans les deux sens git diff branche1...branche2 pour les modifications non commités dans la branche1
La bonne pratique pour travailler avec les branches
Travailler avec un dépôt distant et GitLab
- Création d'un dépôt :
Se rendre sur l'interface Gitlab sur le serveur devspot et créer le dépôt à partir de l'interface graphique.
- Récupérer un dépôt distant en local pour la première fois (clone) :
(exemple avec le projet MiscBox)
git clone http@osur.univ-reunion.fr/outils/devspot/git:promise/miscbox.git MiscBox
Attention : ne pas oublier que le nom du dépôt distant se termine par .git. On peut récupérer l'URL exacte dans la page « Activity » du projet.
- Enregistrer plusieurs dépôts:
git remote add nom_depot adresse_depot
Par exemple si on veut ajouter le dépôts renater du projet en SSH:
git remote add sourcesup git+ssh://git@git.renater.fr:2222/projet.git
et pour pousser la branche develop on n'a plus qu'à faire: git push sourcesup develop
- Récupération des branches distantes:
Avec la commande précédente on vient de récupérer la branche principale du projet (master).
Pour voir l'ensemble des branches en local:
git branch
... ce qui dans ce cas va donner uniquement
*master
Pour récupérer la branche distante gestion_attributs:
git checkout -b gestion_attributs origin/gestion_attributs
On va récupérer et se positionner automatiquement sur cette nouvelle branche:
*gestion_attributs master
- Pousser la branche master locale vers le serveur depuis lequel vous avez cloné le dépôt (origin) :
git push origin master
ou sinon plus générique
git push [nom-distant] [nom-de-branche-locale]
Attention : si quelqu'un a poussé entre temps on aura un message de rejet, on doit d'abord tirer les modifications de la personne précédente, les fusionner avec les votres et pousser.
- Pousser une branche vers plusieurs dépôts à la fois (GitLab OSU-R et Sourcesup) :
git remote add latotale http://osur.univ-reunion.fr/outils/devspot/git/promise/atmdata.git git remote set-url --add latotale git+ssh://git@git.renater.fr:2222/atmdata.git
- Attention à la limitation en taille par défaut dans Git quand vous poussez vers le dépôt distant:
Si vous avez l'erreur suivante:
fatal: The remote end hung up unexpectedly
c'est que la configuration Git de la taille du buffer d'envoi n'est pas adaptée à votre paquet, pour être tranquille on passe à 500MB:
git config http.postBuffer 524288000
- Supprimer une branche sur le dépôt:
git push [nom-distant] :[nom-de-branche]
Pour les utilisateurs Windows
- Ajouter sa clé SSH à GitLab:
Utiliser l'outil puttyGen pour générer une paire de clés privées/publiques. Si vous avez déjà une paire de clés, l'ouvrir via puttyGen et récupérer la clé publique (car ATTENTION : copié/collé depuis le bloc-note ne fonctionne pas).
- Installation de TortoiseGit:
Ajoute les commandes GIT, de manière graphique, dans l'environnement de l'explorer de Windows. Suivre les indications d'installation du programme.
- Installation de "Git for windows":
Lors de l'installation, 2 options peuvent être utiles. La première (ci-dessous) rend les commandes UNIX et Git utilisables depuis ms-dos.
La deuxième option utile est de convertir les caractères « retour à la ligne » de windows en système UNIX :
- Utilisation de TortoiseGit:
- Cloner un repository:
Dans un explorer:
Récupérer l'URL du projet à cloner depuis le serveur web GIT :
- Ajouter/commit des fichiers:
Lors du premier commit, ouvrir une commande ms-dos. Se placer dans le répertoire contenant le dossir « .git » correspondant au projet. Taper la commande suivante : git push -u origin master Exemple :
D:\git\e-obs>git push -u origin master Username for 'http://10.82.61.11': **** Password for 'http://****@10.82.61.11': Counting objects: 8, done. Delta compression using up to 8 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (8/8), 54.60 KiB | 0 bytes/s, done. Total 8 (delta 0), reused 0 (delta 0) To http://10.82.61.11/promise/e-obs.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
Dans l'explorateur windows, clique-droit sur le dossier contenant les fichiers à ajouter/commit :