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 -lPermet de répondre à la question Qui l’a modifié ?
git --versionComprendre les concepts
Taper les commandes suivantes
mkdir bonjour
cd bonjour
git initRécupérer le fichier index.html
git statusCommande 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 loggit log -p chemin_vers_le/fichierFaites plusieurs modifications successives avec enregistrement dans l’historique:
commitManipulation
index.htmlPrésentation (avec un
titre niveau 3)Une branche = une fonctionnalité
Ajout:
git branch blue-framePour 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 6Té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-frameAjout encadré
dans styles.css
Faire un commit
Retour à la branche master
git checkout mastergit diff master..blue-frame
git merge blue-frame
git logEn apparence, la branche blue-frame a disparu
masterSuppression de la topic-branch blue-frame
git branch -d blue-frameLe 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-frameDans 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 masterRemplacement de
git est formidable en
git est indispensable
git merge red-framegit 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)' --alllg2 = 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)' --allgit graph
git lg1
git lg2https://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 pratiqueModifier
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
mergegit branch -d pratiqueEn cas de suppression qui entraînerait une perte de données
Exemple:
git branch sans-issue
git checkout sans-issueecho ".sansIssue { fill: #444;}" >> styles.cssgit status
git add styles.css
git commit -m "sans issue"git checkout mastergit branch -d sans-issuegit branch -D sans-issuehttp://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 masterExaminer les commits
diff
Onglet network
graph
git pull
git pull origin masterOn 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.