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

< Git

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 :

  1. La création d'un dépôt git pour démarrer un projet vierge
  2. La création d'un dépôt git pour un projet existant, les fichiers se trouvant sur votre machine
  3. 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

modifier

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

git init mon-projet
Initialized empty Git repository in /tmp/mon-projet/.git/

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

modifier

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

cd mon-projet
git init
Initialized empty Git repository in /tmp/mon-projet/.git/

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)

modifier

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 :

git clone https://gerrit.wikimedia.org/r/p/test/mediawiki/extensions/examples.git
Cloning into 'examples'...
remote: Total 398 (delta 0), reused 398 (delta 0)
Receiving objects: 100% (398/398), 52.19 KiB | 0 bytes/s, done.
Resolving deltas: 100% (236/236), done.
Checking connectivity... done
cd examples
ls
chris_file
chris_pushed_this_file_without_review
ContentAction
ErrorPage
Example
FourFileTemplate
HelloWorld
Parser_function.i18n.magic.php
Parser_function.php
Parser_hook.php
Someone_was_here
SpecialIncludable.php
test1.php
Variable_hook.i18n.magic.php
Variable_hook.php

 

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 une seule branche

modifier
git clone --single-branch --branch 1234-branche-test https://gerrit.wikimedia.org/r/p/test/mediawiki/extensions/examples.git

Cloner un dépôt privé

modifier

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

git clone https://jackpotte@gerrit.wikimedia.org/r/p/test/mediawiki/extensions/examples.git

Créer un fork

modifier

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é[1] :

git remote set-url origin mon_depot_fork

Puis vérifier :

git remote -v

Pour synchroniser le fork avec sa source :

git merge upstream/master

Sinon on ne veut pas tout synchroniser, on peut faire un cherry-pick.

 Si le but est de modifier régulièrement un projet, il est plutôt déconseillé de passer par ses forks car ils doivent régulièrement être resynchronisés (avec des conflits potentiels), et cela multiplie le nombre de pull request par deux (pour du fork vers une branche du projet, puis une vers la release).

Références

modifier