---
title: "Tutoriel git"
output:
toc: true
---
* * * * *
## Introduction
### À qui s'adresse ce tutoriel ?
- Objectif du tutoriel : apprendre à utiliser le logiciel git et le [serveur
gogs](https://gogs.univ-littoral.fr) mis en place par le
[SCOSI](http://scosi.univ-littoral.fr/).
- Pré-requis : utilisation basique d'un ordinateur.
- Public visé : les développeurs au sens large (code latex, python, matlab, R,
java...)
### Qu'est-ce-que git et gogs ?
- git : logiciel de journalisation de code source décentralisé (alternative à
mercurial, subversion, CVS...)
- gogs : service d'hébergement de code source utilisable avec git (alternative
à github, bitbucket...)
### Dans quels cas utiliser git/gogs ?
- journalisation
- sauvegarde distante
- synchronisation
- travail en équipe
- projets publics ou privés :
**-> Principalement sur des fichiers textes !!!**
### Dans quels cas ne pas utiliser git/gogs ?
- édition collaborative en temps-réel -> sharelatex
- partage de fichiers -> serveur ftp, http...
- fichiers dans un format non textuel (jpg, word, excel...) -> dropbox
### Concepts de base
#### Notion de "version" (commit)
Un "projet git" contient l'historique de toutes les modifications de chaque
fichier. On appelle "commit" un état sauvegardé de ces modifications (une
version du projet en quelque sorte).
Généralement, on modifie le projet à partir de la version précédente et ansi de
suite; ce qui correspond à une succession de commits :
![](concepts_commits_1.svg)
Mais on peut également effectuer des modifications en parallèles. On appelle ça
des branches :
![](concepts_commits_2.svg)
On peut ensuite rassembler ces modifications en fusionnant les branches :
![](concepts_commits_3.svg)
#### Notion de dépôt (repository)
On appelle dépôt l'ensemble des fichiers de notre "projet git", avec
l'historique des commits.
Un dépôt peut être dupliqué sur différentes machines, pour synchroniser les
données ou pour travailler en équipe.
Dans l'ancien temps des années 2000, on avait un dépôt principal distant que
l'on synchronisait ou modifiait via des copies locales partielles (subversion,
CVS...) :
Aujourd'hui, on utilise plutôt des dépôts décentralisés (git, mercurial...).
Avec ce système, tous les dépôts sont identiques et peuvent se synchroniser
entre eux :
Généralement, on garde tout de même un dépôt sur un serveur distant accessible
en permanence (serveur gogs, github...).
* * * * *
## Installation et configuration
Pour utiliser git, il suffit d'avoir installé le logiciel du même nom. Pour
synchroniser des dépôts avec le serveur gogs, il faudra également une
connexion internet.
### Installation sous Linux
TODO
```
sudo apt-get install git
```
interface graphique
qgit
### Installation sous Windows
[http://git-scm.com](http://git-scm.com)
### Configuration
```
git config --global user.name
```
```
git config --global user.email
```
### Exercice
* * * * *
## Dépôt local (journaliser mon projet)
init
.git
status
add
commit
log
clone
head
.gitignore
conseil sur les fichiers générés et les fichiers de données
### Exercice
* * * * *
## Dépôt distant (sauvegarder mon projet sur un serveur)
nouveau projet
projet existant
### Exercice
* * * * *
## Branches (travailler en équipe)
### Exercice
* * * * *
## Forks (collaborer avec d'autres projets)
### Exercice
* * * * *
## Références
https://www.atlassian.com/git/tutorials/
http://git-scm.com/book/en/v2
* * * * *
Dernière mise à jour : 2016-03-05