Petit mémo git

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

[1] git (I18N)

[2] système de gestion de version (I18N)

[3] bazaar (I18N)

[4] fossil (I18N)

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[1].

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'

[1] cet article (I18N)

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

Pour le coup une simple reprise de cet article[1].

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'

[1] cet article (I18N)

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

 1  #!/usr/bin/env bash
 2  
 3  # This script have to be called from a git repository
 4  
 5  # $1 must contain the path to the fossil file to export
 6  [ -z "$1" ] && exit 1
 7  
 8  [ -f tmp_export_file ] && rm tmp_export_file
 9  
10  fossil export --git "$1" > tmp_export_file
11  sed -i "s/milouse <milouse>/Étienne Deparis <mon@mail.tld>/g" tmp_export_file
12  
13  cat tmp_export_file | git fast-import
14  
15  GITHUB_TARGET=$(git remote -v | grep 'github.com:milouse' | head -n1 | cut -f1)
16  
17  git push $GITHUB_TARGET trunk

[1] documenté (I18N)

--

📅 mercredi 6 avril 2016 à 22:18

📝 milouse with GNU/Emacs 29.4 (Org mode 9.7.6)

propelled by fronde