# Les principes de GIT @@ ## Sécurisant * Les opérations sont locales * Toutes les modifications sont tracées * Système de checksum * 1 hash est généré pour chaque opération(sha-1) * Principalemeent des ajout, peu de suppression * Perte d'information difficile * Retour arrière très souvent possible * Snapshot et pas une recopie complète @@

Structure d'un dépôt

Un dépôt Git est créé en local par :

$ git init
$ git clone (voir plus loin)

@@

Structure d'un dépôt

Le dossier .git correspond au dépôt git.

 

Il contient une version complète du dépôt (historique, configuration...)

@@

Structure d'un dépôt

Le dossier .git correspond au dépôt git.

 

 

Les dossiers et fichiers à coté du répertoire .git constituent le working directory.

@@ ## Répertoire de travail : checkout ![checkout](svg/checkout.svg) Remplit le **working directory** avec le contenu du **commit** sur lequel on veut travailler. @@ ## Effectuer des changements * Commencer à faire des modifications * pas besoin de dire à GIT sur quels fichiers on travaille * Il suffit juste de lui dire **quels changements sont à commiter** ```shell $ git add $ git rm ``` Que se passe-t-il si l'on fait un `git add` ? @@ ## Ajout des modifications : add ![add](svg/add.svg) **Staging area** ou **index** est l'endroit où le prochain commit est préparé. @@ ## Validation  : commit ![commit](svg/etats.svg) `git commit` publie uniquement les changements présents dans la **staging area**. Il peut rester des éléments modifiés dans le **working directory** qui ne seront pas inclus dans le **commit**. @@ ## En résumé : Cycle de vie des fichiers ![LifeCycle](svg/file_life_cycle.svg) @@

Historique des commits

Les commits ce succèdent les uns avec les autres.

 

Les flèches représentent les relations entre les commits.

 

Une façon de consulter l'historique :

$ git log
$ git log --oneline
$ git log --graph
$ gitk

branche

référence à la branche courante