Git : utilisation : Différence entre versions
De wikiGite
Ligne 13 : | Ligne 13 : | ||
Dans ce cas git ne fait aucun merge, il faudra le faire manuellement ensuite. On peut donc plutôt utiliser : | Dans ce cas git ne fait aucun merge, il faudra le faire manuellement ensuite. On peut donc plutôt utiliser : | ||
git pull origin | git pull origin | ||
− | qui réalise fetch + merge | + | qui réalise fetch + merge automatiquement. Si des fichiers locaux ont été modifiés (pour des tests par exemple) et que Git indique un problème de cohérence entre le local et le remote: |
+ | Entry xxx not update. Cannot merge | ||
+ | on peut réinitialiser les fichiers locaux par rapport à la version correspondante en remote avant de faire le "pull" : | ||
+ | git reset --hard HEAD | ||
+ | git pull origin | ||
Créer une branche : | Créer une branche : |
Version actuelle datée du 10 décembre 2012 à 11:18
Sommaire
Documentation
Utilisation
Cloner un dépôt remote sur un PC de développement :
git clone git@github.com:kogite/fabric ./fabric
Valider les modifications en local
git commit -a -m"The commit description text"
Pousser ces modification vers le dépôt remote
git push origin
Récupérer les sources à partir du remote :
git fetch origin
Dans ce cas git ne fait aucun merge, il faudra le faire manuellement ensuite. On peut donc plutôt utiliser :
git pull origin
qui réalise fetch + merge automatiquement. Si des fichiers locaux ont été modifiés (pour des tests par exemple) et que Git indique un problème de cohérence entre le local et le remote:
Entry xxx not update. Cannot merge
on peut réinitialiser les fichiers locaux par rapport à la version correspondante en remote avant de faire le "pull" :
git reset --hard HEAD git pull origin
Créer une branche :
git branch nouveau-module
Passer "de branche en branche" :
git checkout nouveau-module # place sur la branche nouveau-module fraichement créée git checkout master # ramène sur la branche master
Pour créer une branche et aller directement dessus en même temps :
git checkout -b nouveau-module
Fusionner une branche au master :
git checkout master git merge nouveau-module
S'il y a des conflits (mêmes fichiers modifiés sur les deux branches), Git prévient et annule le merge. Il faut résoudre les conflits manuellement avant de retenter une fusion.
Supprimer une branche (inutile, ou qui a été fusionnée à master) :
git branch -d nouveau-module
GITHUB : EXEMPLE AVEC PROJET FABRIC
- création compte git (exemple : "kogite", crée un dépôt https://github.com/kogite)
- enregistrement clé dsa.pub sur git : http://help.github.com/linux-set-up-git/
Pour information :
- Procédure fork/clonage : http://help.github.com/fork-a-repo/
- plus détaillée : http://www.eqqon.com/index.php/Collaborative_Github_Workflow
Connecter en "kogite", aller sur sur https://github.com/fabric/fabric, créer un fork (bouton fork en haut à droite).
Le fork est automatiquement ajouté au dépôt kogite.
clone local (sur le PC de développement) :
cd ~/Dev/Fabric git clone git@github.com:kogite/fabric ./fabric
Ce clone-ci s'appelle par défaut "master", le dépôt à l'origine du clone s'appelle par défaut "origin".
Aller dans cd ~/Dev/Fabric/fabric, travailler sur le code !
Commits réguliers dans notre clone local (master):
- si nouveau(x) fichiers :
git add FILE1 FILE2 ...
- sinon :
git commit -a -m"The commit description text"
Une fois les modifications validées en local, on "push" vers le dépôt principal (origin):
git push origin
(commande complète au cas où : git push origin master)
Maintenant, il faut avertir le dépôt officiel de Fabric qu'on a des modifications à inclure. Ce dépôt ne nous appartient pas et on ne peut donc pas y écrire, c'est au développeur principal de prendre la décision d'inclure notre code.
Pour ça, on fait une requête ("pull request") sur https://github.com/kogite/fabric
Déclarer le dépôt "maître" (qui s'appelera "upstream", nom convenu) :
$ cd ~/Dev/Fabric/fabric $ git remote add upstream git://github.com/fabric/fabric.git
A l'avenir, pour récupérer les dernières version du "maître" et fusionner :
$ cd ~/Dev/Fabric/fabric $ git fetch upstream $ git merge upstream/master
--> ce qui merge "upstream" avec le "master" local. Il faut donc synchroniser master (local) avec origin (dépôt kogite/fabric) pour que tout le monde soit au même niveau.
$ git push origin
Gestionnaire graphique de version
gitk, ou Gitg
Depot public
Installer git-daemon :
aptitude install git-daemon-run
lancer le daemon :
git daemon --base-path=/hgit daemon --base-path=/home/git/repositories/ --detach --syslog --export-all