Git
1/ Les basics :
Pour cloner un dépot : git clone https://xxxxxxxxx
Pour ajouter une modification : git add rep1/monFichier.xxx
Pour ajouter toutes les modifications : git add -A
Pour annuler les ADD : git reset
Pour annuler le ADD d’un fichier : git reset rep1/monFichier.xxx
Pour annuler les modifications d’un fichier : git checkout rep1/monFichier.xxx
Pour commiter : git commit -m "mon message"
Pour commiter les fichiers modifiés (pas les ajouts) sans faire de ADD : git commit -am "mon message"
Pour pousser ces commits sur le repository : git push
Pour récupérer toutes les modifications réalisées depuis le dernier PULL : git pullou git pull --rebasesi des commits ont été réalisés depuis le dernier PULL
En cas de problème durant un rebase, la commande git rebase --abortannule tout.
2/ Les utilitaires :
Pour voir le statut du dépot local : git status
Pour voir les modifications d’un fichier : git diff rep1/monFichier.xxx
Pour voir toutes les modifications : git diff
Pour obtenir les logs : git logou git log --pretty=oneline
Pour afficher les informations du repository distant : git remote show origin
Pour sauvegarder dans un espace temporaire des modifications (sans les commiter) : git stash
Pour lister les sauvegardes : git stash list
Pour récupérer la sauvegarde la plus récente : git stash pop
Pour annuler tous les commits locaux : git reset HEAD^
3/ La manipulation d’historique
3.1/ squash & rename :
Pour modifier l’historique sur les 5 derniers commits (à ne faire que si aucun push n’a été fait depuis) : git rebase --interactive HEAD~5
Dans l’éditeur qui s’ouvre, remplacer les pick par :
- r pour reword afin de modifier le message du commit (le nouveau message est à saisir après avoir sauvegarder ce premier éditeur de texte)
- s pour squash permet de fusionner le commit avec celui qui le précède dans le temps (et fusionne les commentaires des deux commits)
- f pour fixup qui fusionne comme le squash mais qui supprime le commentaire
Pour pousser sur le repository distant un rebase qui modifie l’historique déjà poussé /!\ attention quand on travaille en équipe /!\ : git push --force
3.2/ La manipulation d’historique - author :
Pour modifier l’auteur des commits d’un dépôt, il est possible d’utiliser la commande suivante :
git filter-branch -f --env-filter "
GIT_AUTHOR_NAME='Guillaume TALBOT'
GIT_AUTHOR_EMAIL='talbotgui@gmail.com'
GIT_COMMITTER_NAME='Guillaume TALBOT'
GIT_COMMITTER_EMAIL='talbotgui@gmail.com'
" HEADMais, ensuite, il ne faut pas oublier de modifier l’auteur dans le dépôt (pour ne pas recommencer la même erreur) :
git config user.name "Guillaume TALBOT"
git config user.email "talbotgui@gmail.com"4/ La manipulation de branches :
Pour lister les branches locales : git branch
Pour passer d’une branche à l’autre : git checkout maBranche
Pour créer et passer à une autre branche : git checkout -b maBranche
Pour supprimer une branche : git branch -d maBranche
Pour afficher les différences entre deux branches : git dif maBranche...lAutreBranche
Pour fusionner simplement une branche vers la branche courante : git merge monAutreBranche
Pour pousser dans le master les modifications d’une autre branche en un seul commit :
git checkout master
git merge --no-ff maBrancheFeaturePour pousser sur le dépot distant toutes les branches : git push --all
Pour lier une branche locale à une branche distante existante (après avoir fait un push -all créant une branche par exemple) : git branch --set-upstream-to origin/maBranche
5/ Ajouter un outil de DIFF pour les documents Microsoft Office
- Ajouter les lignes suivantes dans le fichier .gitconfig (vi ~/.gitconfig depuis une console gitbash) :
[diff]
tool = pdiff
[difftool "pdiff"]
cmd="wscript.exe \"c:\\Program Files\\TortoiseSVN\\Diff-Scripts\\diff-ppt.js\" \"`pwd`/$REMOTE\" \"$LOCAL\""- Pour tester, exécuter la commande :
git difftool -Y -t pdiff maPresentation.pptx - Ajouter un alias pour appeler ce diff (dans la liste des alias existante si besoin) :
[alias]
diffP = difftool -Y -t pdiff- Pour tester cet alias :
git diffP maPresentation.pptx
6/ Ajouter deux scripts (avec alias) pour activer/désactiver un proxy
- Placer le script suivant dans le script setGitConfigProxy.sh dans le répertoire d’installation de GIT
git config --global http.proxy http://mon.proxy:8080
git config --global https.proxy https://mon.proxy:8080- Placer le script suivant dans le script unsetGitConfigProxy.sh dans le répertoire d’installation de GIT
git config --global --unset http.proxy
git config --global --unset https.proxy- Exécuter les commandes suivantes :
git config --global alias.setProxy '!sh $GIT_EXEC_PATH/../../../setGitConfigProxy.sh'
git config --global alias.unsetProxy '!sh $GIT_EXEC_PATH/../../../unsetGitConfigProxy.sh'- Pour manipuler le proxy pour NPM et MAVEN depuis ces scripts, il suffit d’ajouter les lignes suivantes :
# setGitConfigProxy.sh
# Proxy pour GIT
git config --global --unset http.proxy
git config --global --unset https.proxy
# Proxy pour NPM
npm config rm proxy
npm config rm https-proxy
# Proxy pour MAVEN
sed "s/active>true/active>false/" -i C:/outils/apache-maven-3.5.2/conf/settings.xml```# unsetGitConfigProxy.sh
# Proxy pour GIT
git config --global http.proxy https://mon.proxy:8080
git config --global https.proxy https://mon.proxy:8080
# Proxy pour NPM
npm config set proxy https://mon.proxy:8080
npm config set https-proxy https://mon.proxy:8080
# Proxy pour MAVEN
sed "s/active>false/active>true/" -i C:/outils/apache-maven-3.5.2/conf/settings.xml