Les bases
TODO :
- Staging area + commandes + (ui ?)
- Les commandes de base ---> tuto Dana/PA
- à quoi sert git, pourquoi git ?
source : lesjoiesducode
git rebase mastergit rebase -i master
pick 1 Start my branch1
pick 2 Continue my branch1
git reflog### Output
0f8dde4 HEAD@{0}: rebase -i (finish): returning to refs/heads/master
0f8dde4 HEAD@{1}: rebase -i (squash): first + third
606813c HEAD@{2}: rebase -i (start): checkout f07ec95
b8fed7c HEAD@{3}: commit: third
e3025b3 HEAD@{4}: commit: second
606813c HEAD@{5}: commit: first
f07ec95 HEAD@{6}: commit (initial): initialgit checkout mastergit tag "Add-great-lib" 1git cherry-pick Add-great-libgit checkout --detach Cgit cherry-pick Add-great-libgit checkout mastergit reset --hard HEAD~1git reflog
# reflog output...
# Find the commit xxx to which we want to reset
git reset xxxCOMMIT_EDITMSG
Le dernier message de commit
config
Surcharge de la config git locale à cette machine et à ce répo
description
Description du répo utilisée pour Gitweb, inutilisé sinon.
FETCH_HEAD
Résultat du dernier git fetch.
HEAD
La ref courante du repository
index
Représentation de la "staging area"
ORIG_HEAD
Mis à jour lors de merge, rebase. C'est le hash du commit servant de parent pour la suite de la commande.
packed-refs
Mis à jours lors du gc de git.
Contient les refs "dormantes" du répo. (voir ici)
MERGE_HEAD
MERGE_MODE
Fichiers créés au début d'un merge et détruits à la fin.
MERGE_MSG
Hash "dernier" commit de la branche
Indicateur utilisé pour savoir quelles branches merger en cas de git pull
ae4cc3ca... branch 'develop' of xxxx
face39bb... not-for-merge branch 'bugfix/fix-display-of-no-data-component' of xxxxLe nom de la branche sur le remote et l'adresse du remote
hooks
Scripts jouer en fonction d'évènements de git.
info
Contient des informations complémentaire au répo.
Notamment un fichier exclude qui agit comme un .gitignore local (non-partagé)
logs
Historique des opérations git par ref
objects
La "BDD" de git. (voir git-cat-file)
rebase-apply
Espace de travail de git utilisé lors des git-rebase et des git-am.
refs
Les refs (branches, tag, stash) les plus souvents accédés du répository.
Elles peuvent être "archivées" dans le fichier packed-refs
[alias]
co = checkout
st = status --short --branch
mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -
out = log @{u}..
in = log ..@{u}{
"hooks": {
"pre-push": "npm run lint && npm run test:once"
}
}
#!/bin/zsh
c=$(git branch | grep -c "$1")
if [[ "$c" -eq 1 ]]; then
git checkout $(git branch | grep "$1")
else
echo "'$1' is ambigus"
git branch | grep "$1"
exit 1
fiGitlab
Gitlab n'est pas git...
Lorsque l'on fait un merge entre une feature et un refactoring, il faut bien faire attention à ne rien avoir cassé.
Si le refactoring a supprimé un fichier qui était référencé mais PAS modifié par la feature, git sera incapable de voir qu'il y a un problème.
Dans ce cas ce sera le compilateur et eventuellement l'éxecution des tests qui permettront de détecter le problème.
Un commit de Michel ?
commit 8684d0560cb7c51234cbefebd83409e90cb7e29f
Author: Michel michel.xxxx@viseo.com
Date: Wed Dec 6 12:40:14 2017 +0100
"Init presentation"
sha1(
commit_message,
commiter,
commit_date,
author,
authoring_date,
Hash-Of-Entire-Working-Directory
) .
│ main.java
│
├───.git
└───resources
│ logo.png
└───components
...
sha1(
"Init presentation",
"michel.xxxx@viseo.com",
Wed Dec 6 12:40:14 2017 +0100,
"michel.xxxx@viseo.com",
Wed Dec 6 12:40:14 2017 +0100,
aa1b2fb696a831c89c53f787e03d863691d2b671
)sha1(
meta data
commit_message
commiter
commit_date
author
authoring_date
Hash-Of-Entire-Working-Directory
hash-of-parent-commit
)git cherry-pick cool-feature~3..cool-featuregit config --global rerere.enabled true