Outils pour utilisateurs

Outils du site


git

Ceci est une ancienne révision du document !


IDE à essayer: https://www.gitkraken.com/features

général git

création du git dans le dossier courant

 git init

pour ajouter un fichier avec git (il faut le faire pour tous les fichiers nouveaux ou que l'on a modifié):

git add test/test.cpp 

pour commiter en local A FAIRE DANS MTI/work…./

git commit

ensuite saisir le commentaire associé puis faire :x pour sauver pour voir les dernier commit A FAIRE DANS MTI/work…./

git log

pour selectionner les parties de diff que l'on veut ajouter à un commit, pour ne pas polluer un commit avec des modifications qui n'ont rien à voir

git add -p files

avant de commiter pour voir les modifs locales non encore commitées A FAIRE DANS MTI/work…./ :

git status

a faire une fois au début pour s'identifier

git config --global user.name "Vandeportaele Bertrand"
git config --global user.email bvandepo@laas.fr
git config --global --add core.editor vim
cat ~/.gitconfig

pour afficher les différences des fichiers A FAIRE DANS MTI/work…./

git diff 

pour récuperer la derniere version commitée en local d'un fichier (annule les dernières modifications)

git checkout src/MTI.cpp

pour tout commiter A FAIRE DANS MTI/work…./ , attention ne pas faire si on a des fichiers qu'on ne veut pas commiter (par exemple makefile.in de MTI)

git commit -a 

pour inclure un message au commit

git commit -a -m "message"

pour montrer des stats sur les fichiers modifiés à chaque commit

git log --stat 

pour supprimer un fichier du git “Convert WebPages to MPFS.sh” sans tenir des modifs locales

git rm -f "Convert WebPages to MPFS.sh"

pour recharger les derniers push effectués par les autres depuis notre dernier pull et checker les compatibilités avant de pusher, l'option rebase permet de positionner notre prochain push (mes commits) en haut de la liste

git pull --rebase

si il y a des incompatibilité de merge, des balises sont placées dans les fichiers, effacer les balises et corriger les problèmes puis faire:

 git rebase --continue

pour ecraser un fichier en local par la version du dépot:

 git checkout -- conf/airframes/LAAS/mmlaas_N1.xml

pour soumettre mes modifs au dépot git

git push

Pour générer la liste des fichiers qui ont changé:

git status | grep modified  | sed ':a;{N;s/\n/ /};ba'   | sed 's/[[:space:]]*#[[:blank:]]*modified:[[:blank:]]*/ /g'

Cheat-sheet sur les regexp: http://krijnhoetmer.nl/stuff/regex/cheat-sheet/

Pour le remplacement du \n avec sed: http://stackoverflow.com/questions/1251999/how-can-i-replace-a-newline-n-using-sed

To resynchronize with the head branch, keeping the local change (since the last commit):

cd dossiergérépargit
git pull
git stash
git pull
git stash pop

Pour effacer le dernier commit, en conservant en local les modifications sur les fichiers:

git reset --soft HEAD~1

Pour effacer le dernier commit, en effacant en local les modifications sur les fichiers:

git reset --hard HEAD~1

Pour mettre de coté les modifications locales le temps de faire des push/pull etc (détails https://git-scm.com/docs/git-stash ):

git stash

pour restaurer ces modifications :

git stash pop

pour voir les modifications entre deux commits différents sur un fichier;

git diff 24c3b0f3e85f494ec30334025c608eafbb91738b 70364982a52fd9e8c47fbd00ddbea34f208750d2 

pour voir les modifications entre deux commits différents sur un fichier;

git diff 24c3b0f3e85f494ec30334025c608eafbb91738b 70364982a52fd9e8c47fbd00ddbea34f208750d2 ./ORBextractor.cc

pour revenir à une version commité antérieurement, d'abord s'assurer que tout les fichiers en cours de modifications sont commités puis:

  git checkout 872b6f963cc3fa7b8130b4dd6e8d76662282f714

Sur GitHub

https://help.github.com/articles/fork-a-repo/

https://help.github.com/articles/creating-a-pull-request/

https://confluence.atlassian.com/bitbucket/branching-a-repository-223217999.html

fork sur github: https://github.com/bvandepo/ORB_SLAM2

http://stackoverflow.com/questions/11619593/how-to-change-the-fork-that-a-repository-is-linked-to je veux garder le repo original pour beneficier des updates

git remote rename origin upstream
git branch -avv # existing branches like master are linked to upstream/xxx
git remote add origin https://github.com/bvandepo/ORB_SLAM2
git checkout -b binaryVocabularyFileBranch
git add...
git commit -m"..."
git push

Whenever you need to update your fork based on the recent evolution of the original repo:

git checkout master
git pull # it pulls from upstream!
git checkout newFeatureBranch
git rebase master # safe if you are alone working on that branch
git push --force # ditto. It pushes to origin, which is your fork.

Pour inviter un collaborateur sur un repo github: https://help.github.com/articles/inviting-collaborators-to-a-personal-repository/

Au LAAS

Automatisation envoi d'email par git

http://www.systutorials.com/1473/setting-up-git-commit-email-notification/

ssh ...@trac....
cd /git/robots/embedded-vision.git/hooks
cp post-receive.sample post-receive

pour trouver ou est le script post-receive-email

locate post-receive-email
  /git/jrl/corba/hpp-corba-tutorial.git/hooks/contrib/post-receive-email
  /git/jrl/corba/hpp-template-corba.git/hooks/contrib/post-receive-email
  /git/jrl/git-hooks/contrib/post-receive-email
  /usr/local/src/cgit/git/contrib/hooks/post-receive-email
  /usr/local/src/git/contrib/hooks/post-receive-email

je prends le dernier et ajoute l'appel la derniere ligne de post-receive

nano  post-receive 
  /usr/local/src/git/contrib/hooks/post-receive-email
cd /git/robots/embedded-vision.git/
nano config

ajouter

[hooks]
   mailinglist = "cslam-developers@laas.fr"
   senderemail = "bvandepo@laas.fr"
   

spécifique robotpkf

regler $ROBOTPKG_BASE dans ~/.profile

source .profile 
cd robotpkg

mise à jour globale des paquets

git pull 
cd hardware/MTI/
apres avoir commité (en local)
git log
gitk
cd work.garossos.laas.fr/MTI-0.4/

changer dans test/Makefile.in

virer le -lrt  

pour construire le .configure

./autogen.sh 

puis lancer configure en indiquant le dossier cible pour les executables (pas sur /usr…. ou il faudrait etre root)

./configure --prefix=/Users/bvandepo/openrobots
which glibtoolize
sudo ln -ls /usr/bin/glibtoolize /usr/bin/libtoolize

dans le cas ou on travaille sur les paquets standard (sans branches), pour mettre à jour un paquet (et installer l'executable)

make update confirm  verbose=1  
   
   
   

pour récuperer la dernière version du code (pas encore paquagée et stable) (ici la branche GPS de mti)

make checkout confirm

modifier le code si on veut puis pour recompiler:

make replace confirm

pour nettoyer le work

make clean confirm

pour enlever les executables installés du module

make deinstall

outils graphique

dans le dossier courant

gitk  

ATTENTION GITK NE MONTRE QUE LA BRANCHE COURANTE, qui a été selectionnée avec

git checkout nombranche

pour faire du merge avec interface graphique

git mergetool

maj

on ne peut pas faire de checkout pour changer de branche tant que l'on a pas fait un commit des modifs

liste les branches, affiche une étoile devant la brance actuellement selectionnée

git branch

pour merger la branche avec la branche courante

git merge nombranch

on peut réorganiser localement les commits avant de les pusher (par exemple les réordonner, les merger etc).

rebase au lieu de merge: faire repartir une branche depuis un nouveau point d'une branche d'origine. A faire lorsque l'on veut commiter des modifs vers une branche A qui a continué d'évoluer. On dis que nos modifs doivent s'appliquer à la dernière version de la branche A. Cela crée des nouveaux commits

server git au laas: trac.laas.fr

quand on clone un repository ca cree un origin/master qui est l'exacte copie de master

si on a taggé des commits, pour qu'ils soient pris en compte, il faut utiliser

git push --tags

modules

permet de structurer les repositories:

gestion des range

git dif master@{yesterday}..master
master^2   parent numero 2 de master
master~n  ancetre numero n sur la même branche

autres docs

Redmine au LAAS

Notice sur le wiki sysadmin: https://wiki.laas.fr/sysadmin/RedmineGitSvn#Acc.2BAOg-s_au_d.2BAOk-pot_git

Mes projets en cours: https://redmine.laas.fr/projects/bvandepo

Pour créer un nouveau projet:

new suproject (à droite)
name: visapp_paper_innersense
décocher wiki
create and continue
en haut, jump to a project-> Bertrand Vandeportaele->visapp_paper_innersense

settings

+ New repository
git
create

Cliquer sur le repository: ssh:git@redmine.laas.fr/laas/users/bvandepo/visapp_paper_innersense.git comme on a déjà en local fait un git init, faire comme indiqué sur Setup Existing Repository : cd existing_git_repo git remote add origin ssh:git@redmine.laas.fr/laas/users/bvandepo/visapp_paper_innersense.git

git push -u origin master

Pour ajouter des membres, il faut que les utilisateurs aient créé un compte sur https://redmine.laas.fr/

Settings->Members-> + New member

redmine remplace l'ancien: https://wiki.laas.fr/robots/GitServer

Pour g2o

cloné depuis github, créer un repo sur redmine et pour changer l'url:

git remote set-url origin ssh://git@redmine.laas.fr/laas/users/bvandepo/g2o-direct-slam-for-lines.git
git push origin master

pour le récupérer:

git clone ssh://git@redmine.laas.fr/laas/users/bvandepo/g2o-direct-slam-for-lines.git
git.1498478750.txt.gz · Dernière modification : 2017/06/26 14:05 de bvandepo