Qu'est-ce qu'on fait ici ?

  • Venez comme vous êtes !
  • Gardez ce qui vous plait
  • Partagez nous vos astuces

git

Un petit rappel ?

Les GUI pour Git

SourceTree

Kraken

Tig

ncurses-based text-mode interface

Tig

Avantages

Git pour les null(s)

  • Facile à prendre en main
  • Pas de commandes à apprendre
  • Représentation visuel de l'arbre de branches Git
  • C'est quand même pas moche...

Inconvénients

  • On ne sait pas ce qu'il y a sous le capot
  • Besoin d'un compte fabriquant
  • Erreurs pas toujours compréhensibles

Commandes

Commits et branches

Rebase

git rebase master

Rebase

Rebase

Intéractif

git rebase -i master
pick 1 Start my branch1
pick 2 Continue my branch1

Intéractif

Journal de références

git reflog
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): initial

Les outils autour de git

Repository management services

Github, Gitlab, Bitbucket, Gogs, Coding...

gitlab

What else ?

  • Stockage des source centralisé
  • Gestion des utilisateurs
  • Pull request
  • Fork

Intégration continue

Jenkins, VSTS, Gitlab-CI...

Customiser git

Alias

[alias]
  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}

Hook

  • pre-commit
  • prepare-commit-msg
  • post-checkout

Mon premier plugin !

#!/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
fi

Plugins

Git, c'est magique!

Avez vous déjà vu ...

Un commit

						
 commit 8684d0560cb7c51234cbefebd83409e90cb7e29f
 Author: Michel michel.barret@viseo.com
 Date:   Wed Dec 6 12:40:14 2017 +0100

"Init presentation"

git hash

algorithme sha-1

hash

"Hasher" un commit

						
sha1(
  commit_message
  commiter
  commit_date
  author
  authoring_date
  Hash-Of-Entire-Working-Directory
)
				
			

Hash-Of-Entire-Working-Directory ?

Exemple : myProjet

Ce que nous voyons


 .
 │ main.java
 │
 ├───.git
 └───resources
 │     logo.png
 └───components
       ...
				

Exemple : myProjet

Ce que git voit

tree

Hashons notre commit

						
sha1(

"Init presentation"

michel.barret@viseo.com
Wed Dec 6 12:40:14 2017 +0100

michel.barret@viseo.com
Wed Dec 6 12:40:14 2017 +0100

aa1b2fb696a831c89c53f787e03d863691d2b671
)
				
			

Mais ça sert à quoi ?

Conserver l'intégrité des données

Hash du commit parent

							
sha1(
 meta data
 commit_message
 commiter
 commit_date
 author
 authoring_date
 Hash-Of-Entire-Working-Directory

 Parent commit hash (89c53f787e1b2fb691...)

)
					
				

On est tous le(a) fils(fille) de quelqu'un...

Gource

Joyeux Noël !

Au prochain épisode...

Licence

Pour ce qui concerne tous les contenus que nous avons produits dans cette présentation : Licence Creative Commons
Découvrir les subtilités de Cassandra de Viseo - Abel Aoun & Michel Barret est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International.
Fondé(e) sur une œuvre à https://github.com/barmic/viseo-take-an-hour_cassandra.git.