Git/Création de votre dépôt local
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
[modifier | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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.