Développer c’est:
Ou dit autrement:
Ligne de vie d’un fichier (timeline)
Temps en abscise sur un axe horizontal
Pour chaque version du document
Sous Windows : git-bash
Sous Mac: commande git
installée par défaut
Linux: commande git
installable par paquet
Votre identité
git config --global user.name "Votre vrai nom ou pseudo"
git config --global user.email "votre.email@example.com"
# Vérification
git config -l
Permet de répondre à la question Qui l’a modifié ?
git --version
Comprendre les concepts
Taper les commandes suivantes
mkdir bonjour
cd bonjour
git init
Récupérer le fichier index.html
git status
Commande utilisée très fréquemment
Création d’une page web simple
Nature morte
Plusieurs étapes
Trois étapes
git add index.html
git status
Changements prêts à être pris en photo
git commit
Prendre la photo
git commit --message "Le message qui explique ce qui a été modifié"
Exemple
git commit -m "First version"
Comment savoir s’il est “propre”
git status
Pour les visualiser
git diff
git log
git log -p chemin_vers_le/fichier
Faites plusieurs modifications successives avec enregistrement dans l’historique:
commit
Manipulation
index.html
Présentation
(avec un
titre niveau 3)Une branche = une fonctionnalité
Ajout:
git branch blue-frame
Pour afficher les branches disponibles
git branch
Changement de branche
git checkout blue-frame
Ajouter le code ci-dessous dans le fichier
~/.bash_profile
#Git Prompt
#http://stackoverflow.com/questions/12870928/mac-bash-git-ps1-command-not-found
source ~/.git-prompt.sh
MAC_PS1='\h:\W \u\$ '
GIT_BASH_WINDOWS_SINGLE_DIR_PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\W\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
GIT_BASH_WINDOWS_PATH_PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
GIT_BASH_WINDOWS_SINGLE_DIR_NO_CR_PS1='\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\W\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
#Removes all lowercase char from hostname to shorten it:
GIT_BASH_WINDOWS_SHORT_PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@`tr -d "abcdefghijklmnopqrstuvwxyz" <<< \h` \[\033[35m\]$MSYSTEM \[\033[33m\]\W\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
GIT_BASH_WINDOWS_SHORT_NO_CR_PS1='\[\033[32m\]\u@`tr -d "abcdefghijklmnopqrstuvwxyz" <<< \h` \[\033[35m\]$MSYSTEM \[\033[33m\]\W\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
#To be enhanced with a right display using this:
#printf '%'$COLUMNS's\n' 'Something to display'
setps(){
OLDPS1=$PS1
if [[ "$1" == '' ]] ; then
echo 'Choose PS1 :'
echo ' 1 : Standard Apple PS1'
echo ' 2 : Git Bash with current dir'
echo ' 3 : Git Bash with current dir (without blank line)'
echo ' 4 : Git Bash with current path'
echo ' 5 : Git Bash with shortened hostname and current dir'
echo ' 6 : Git Bash with shortened hostname and current dir (without blank line)'
echo 'Select 1, 2, 3, 4 or 5:'
read pschoice
else
pschoice=$1
fi
case $pschoice in
1) PS1=$MAC_PS1
;;
2) PS1=$GIT_BASH_WINDOWS_SINGLE_DIR_PS1
;;
3) PS1=$GIT_BASH_WINDOWS_SINGLE_DIR_NO_CR_PS1
;;
4) PS1=$GIT_BASH_WINDOWS_PATH_PS1
;;
5) PS1=$GIT_BASH_WINDOWS_SHORT_PS1
;;
6) PS1=$GIT_BASH_WINDOWS_SHORT_NO_CR_PS1
;;
*) echo "Nothing to change: PS1 is kept"
;;
esac
}
setps 6
Télécharger le fichier .git-prompt.sh
Placer ce fichier dans votre dossier HOME
Le renommer en .git-prompt.sh
Création d’un encadré en CSS
git branch blue-frame
Ajout encadré
dans styles.css
Faire un commit
Retour à la branche master
git checkout master
git diff master..blue-frame
git merge blue-frame
git log
En apparence, la branche blue-frame
a disparu
master
Suppression de la topic-branch blue-frame
git branch -d blue-frame
Le client a décidé d’ajouter un cadre en rouge contenant le texte
Important
On va créer une nouvelle branche: red-frame
En une seule commande :
git checkout -b red-frame
Dans styles.css
, ajouter un style correspondant à ce
nouveau paragraphe.
Faire un commit
.
Pendant ce temps, une modification est faite dans la branche
master
Modification du texte
git checkout master
Remplacement de
git est formidable
en
git est indispensable
git merge red-frame
git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"
git config --global alias.graph '!git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"'
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
git graph
git lg1
git lg2
https://stackoverflow.com/questions/1057564/pretty-git-branch-graphs
https://stackoverflow.com/questions/1838873/visualizing-branch-topology-in-git
Toutes plateformes: Introduction · Tig - Text-mode interface for Git
Sur Mac : GitUp
Création d’un raccourci
git difftool --tool=meld
git config --global alias.meld '!git difftool --tool=/Applications/Meld.app/Contents/MacOS/Meld'
git branch pratique
git checkout pratique
Modifier
git est formidable
en git est pratique
Dans la branche master
Modifier
git est indispensable
en git est génial
git checkout master
git merge pratique
git add index.html
git commit -m "Résolution conflit"
Toujours nécessaire
Rappel
Une branche devient inutile
merge
git branch -d pratique
En cas de suppression qui entraînerait une perte de données
Exemple:
git branch sans-issue
git checkout sans-issue
echo ".sansIssue { fill: #444;}" >> styles.css
git status
git add styles.css
git commit -m "sans issue"
git checkout master
git branch -d sans-issue
git branch -D sans-issue
http://onlywei.github.io/explain-git-with-d3/
Faire quelques exercices
https://github.com/raghur/mermaid-filter
https://github.com/nishimaki10/pandoc-mermaid-filter
Cliquer sur les différents liens présents sur la page du projet
Popularité
Permet de choisir une librairie par rapport à une autre
Copie du projet permettant de travailler de son côté
Indique l’état de santé actuel du projet
Un commit ancien
mauvais signe
Indique le nombre de personnes ayant travaillé sur le projet
Montre l’intérêt de l’open-source
Révélateur de la santé du projet
Montre le nombre de bugs ouverts
A comparer avec le nombre de commit et de contributeurs
Permet de donner une idée des qualités d’un développeur
Les recruteurs peuvent examiner votre profil GitHub
https://www.sourcetreeapp.com/
Serveur distant
Création d’un dépôt
Repository = dépôt
repos = repository
GitHub donne les lignes pour ajouter un remote sur un dépôt local
git remote add origin...
git push
git push -u origin master
Examiner les commits
diff
Onglet network
graph
git pull
git pull origin master
On fait évoluer master en parallèle
Transformer
git est indispensable
en
git est collaboratif
Ajouter dans des branches “topic”
un background de l’encadré
un background de la page
une couleur pour le texte
Caching GitHub passwords in git
Une série d’articles pour se connecter à GitHub via SSH est disponible ici
La création des clefs SSH peut se faire comme indiqué dans ce document annexe sur la gestion des clefs SSH
L’ajout d’une clef se fait en allant lire cet article de la série donnée ci-dessus.