Petit mémo git

J'ai mis du temps à me faire à git. Non pas que son utilisation soit particulièrement compliquée, mais plutôt parce que, comme chaque système de gestion de version, il a ses propres caractéristiques. Venant du monde bazaar et fossil je me suis un peu emmêlé les pinceaux au début. Voici donc sans prétention ma petite cheatsheet.

Création d'une nouvelle branche avec propagation upstream

  1. On se place sur la branche mère
    $ git checkout master
  2. On crée la nouvelle branche locale et on bascule dessus
    $ git checkout -b nouvelle_branche
  3. On push upstream la nouvelle branche
    $ git push -u origin nouvelle_branche

Suppression de branches

Création d'un « serveur »

C'est à dire héberger une instance de votre dépôt git sur un serveur quelconque (pas sur github, donc ^^) pour servir de dépôt upstream. C'est grandement inspiré de cet article.

Mise en place du dépôt sur votre machine distante :

$ cd /var/www/repositories/
$ mkdir my_project.git
$ cd my_project.git
$ git init --bare

Puis, en local :

$ cd my_project
$ git init
$ git add *
$ git commit -m "My initial commit message"
$ git remote add origin user@monserveur:/var/www/repositories/my_project.git
$ git push -u origin master

Toute la magie tiens dans le fait que user doit avoir les droits d'écriture dans /var/www/repositories/ — ce qui est normalement le cas si vous avez réussi à faire votre git init --bare.

Si vous partagez votre dépôt avec des tiers, ils n'auront qu'à faire, pour le cloner, la ligne suivante : $ git clone user@monserveur:/var/www/repositories/my_project.git

Migration d'un dépôt github en interne

Pour le coup une simple reprise de cet article.

Cette commande vous permettra cloner en bare depuis github, transformant une version « clonée » en version « serveur ». Attention, il faut avoir l’autorisation de cloner (ssh, etc) : $ git clone --bare git@github.com:quidam/my_project.git

Puis, sur votre poste de travail, il suffit de spécifier une nouvelle origine à votre copie de travail : $ git remote set-url origin user@monserveur:/var/www/repositories/my_project.git

Mise en place d'un miroir fossil sur github

Le script suivant doit pouvoir fonctionner avec n'importe quel hébergement git. Il faut simplement veiller à modifier la ligne 15 pour filtrer le résultat de git remote avec le bon fragment.

Tout l'intérêt de ce script, comparé au classique — et documentéfossil export --git ../repo.fossil | git fast-import, vient de l'étape intermédiaire au cours de laquelle je modifie les occurrences de mon identifiant fossil vers une identité reconnue par github (ligne 11). À vous d'ajouter les traitements qui vous paraissent nécessaires à la suite de cette ligne.