# Git/Création de votre dépôt local

* Principes
* Apprendre à travailler avec Git
** Avant de commencer : installation et configuration de Git
** Création de votre dépôt local
** Visualiser le contenu de votre dépôt local
** Premiers pas
** Gestion des branches
** Synchroniser le dépôt local avec le dépôt distant
* Fonctionnalités avancées
** Étiquetage (tags)
** Remise (stash)
** Recombinaison (rebase)
** Sous-modules et Super-projets
** Structure interne
** Pull-request
* Recettes
** Exclure des fichiers du dépôt
** Écrire des messages de commit
* Environnement
** Intégration dans les IDEs
** Améliorer sa productivité en configurant Git
** Git sous Linux
** Git sous Windows
** Forges
*** GitLab
*** GitHub
*** Bitbucket
* Git et Subversion (svn)
** Passer de Subversion à Git
** Travailler avec Git local et un dépôt Subversion distant
** Participer au développement de Wikimédia (Gerrit)
* Problèmes connus
* Ressources externes
* Principes
* Apprendre à travailler avec Git
** Avant de commencer : installation et configuration de Git
** Création de votre dépôt local
** Visualiser le contenu de votre dépôt local
** Premiers pas
** Gestion des branches
** Synchroniser le dépôt local avec le dépôt distant
* Fonctionnalités avancées
** Étiquetage (tags)
** Remise (stash)
** Recombinaison (rebase)
** Sous-modules et Super-projets
** Structure interne
** Pull-request
* Recettes
** Exclure des fichiers du dépôt
** Écrire des messages de commit
* Environnement
** Intégration dans les IDEs
** Améliorer sa productivité en configurant Git
** Git sous Linux
** Git sous Windows
** Forges
*** GitLab
*** GitHub
*** Bitbucket
* Git et Subversion (svn)
** Passer de Subversion à Git
** Travailler avec Git local et un dépôt Subversion distant
** Participer au développement de Wikimédia (Gerrit)
* Problèmes connus
* Ressources externes
[ Modifier le sommaire ]
Maintenant que Git est installé, nous allons voir comment créer un dépôt sur notre machine. Un dépôt Git correspond à un projet de développement logiciel : chaque logiciel peut avoir un dépôt Git qui lui est réservé.
Nous allons voir trois cas d'utilisation différents :
* La création d'un dépôt git pour démarrer un projet vierge
* La création d'un dépôt git pour un projet existant, les fichiers se trouvant sur votre machine
* La création d'un dépôt afin de travailler sur un projet existant qui est déjà dans un dépôt git distant, c'est le cas le plus courant.

## Création d'un dépôt git pour démarrer un projet vierge

Rendez-vous dans le répertoire dans lequel vous souhaitez créer votre dépôt (dans notre exemple, nous avons utilisé le répertoire temporaire cd /tmp), puis
Vous pouvez ensuite vous placer dans le dossier "mon-projet" et travailler avec git.

## Création d'un dépôt git avec une base de code existante

C'est tout aussi simple. Il faut d'abord se rendre dans le répertoire où se trouvent les sources et faire un git init
Dès lors, vous êtes prêt à travailler avec git dans ce répertoire.

## Création d'une copie locale d'un dépôt distant (clone)

Cette fois-ci, les sources ne sont pas sur notre machine mais sur un dépôt distant qui existe déjà. C'est le cas d'utilisation le plus typique, vous souhaitez rejoindre un projet pour développer des fonctionnalités, corriger des anomalies et publier vos modifications. Pour cela, vous aurez besoin de l'adresse du dépôt distant.
Contrairement à ce qu'on a vu plus haut, nous n'allons pas utiliser init mais clone en se plaçant dans le répertoire dans lequel on souhaite placer son dépôt.
Lorsque vous faites un clone, vous copiez l'intégralité du dépôt, il est donc normal que cette opération prenne longtemps pour les projets qui ont un long historique de contribution. Par exemple, pour le dépôt officiel du logiciel MediaWiki (git clone https://git.wikimedia.org/git/mediawiki/core.git), il faudra télécharger pas moins de 200 Mo.
Dans notre exemple (toujours en travaillant dans le répertoire temporaire /tmp), nous allons nous créer une copie locale d'un dépôt officiel qui représente un exemple d'extension MediaWiki :
Si le dépôt cloné appartient à un tiers, il se peut que l'on ne puisse pas lui soumettre directement une version. Il faut en passer par une pull-request pour que la modification soit relue par le mainteneur.
Si le dépôt cloné demande une authentification forte, il faut créer une clé SSH et l'ajouter sur la forge.

#### Cloner un dépôt privé

Il faut spécifier en plus son login dans la commande, suivi d'un arobase, et elle demandera le mot de passe :

### Créer un fork

Il est possible de créer un fork (aka bifurcation), c'est-à-dire une copie d'un dépôt dans un autre (historique inclus) en changeant l'URL du dépôt cloné :
Puis vérifier :
Pour synchroniser le fork avec sa source :
Sinon on ne veut pas tout synchroniser, on peut faire un cherry-pick.

## Références

* ↑ https://help.github.com/en/github/using-git/changing-a-remotes-url