Utiliser Git pour collaborer simplement sur des articles en Latex
J’ai récemment collaboré avec d’autres chercheurs pour écrire des articles en Latex, versionnés avec Git. Certains collègues me demandant à quel point c’est simple, je me suis dit que j’allais rédiger un petit aide-mémoire des commandes.
Initialisation
On va dans le dossier de l’article (éventuellement déjà commencé), on initialise le dépôt :
On ajoute un .gitignore
pour que Git ne suive pas les modifications des
fichiers temporaires :
On ajoute les premiers fichiers :
On met en place le lien avec le dépôt distant, sur Bitbucket ou sur le serveur du labo :
Travail régulier
On revient plusieurs jours après sur l’article. On regarde donc si des collègues ont avancé, et on récupère les modifications éventuelles :
On peut lire les messages de commits décrivant les contributions des collègues avec :
On rédige ou édite le texte, on termine ensuite par une validation (commit).
On vérifie d’abord quels fichiers ont été modifiés, avec git status
:
On inclut ceux que l’on veut dans le prochain commit :
J’omets volontairement le -m
après ce git commit
, pour rédiger un message
long. Une fenêtre d’édition s’ouvre, c’est le moment d’écrire un bon message
de commit. La première ligne résume ce que vous avez fait. Les lignes
suivantes peuvent donner les détails.
Note : Il est à mon avis préférable de faire de longs messages de commits envoyés automatiquement par mails aux collègues, plutôt que de mauvais messages de commits et des bons mails rédigés ensuite… (dans le premier cas, on fait le travail une fois, et il peut re-servir à ceux qui n’étaient pas initialement dans la boucle de mails).
Une fois qu’on a validé son ou ses commits, il faut envoyer (pousser) ça au dépôt distant :
Il suffit ensuite de répéter le cycle git pull
, travail, git add
, git
commit
, git push
.
Usages avancés
Revenir à une version antérieure
On utilise l’historique pour trouver l’identifiant de la version à laquelle on souhaite revenir :
On ramène le main.tex
à la version 9d36e47 :
On travaille dessus, et on valide :
Remarques et astuces
-
on ne parle pas ici de branches, même si c’est l’un des intérêts de git. On peut se contenter de faire du mono-branche.
-
on peut ajouter les lignes suivantes dans le fichier de configuration de git pour améliorer l’ordinaire
On pourra ainsi écrire git add toto.tex ; git ci -m"ajout de toto.tex manquant
dans le commit précédent"
pour faire des petits commits rapides de correction.
Et surtout, git ll
au lieu de git log
pour naviguer rapidement dans
l’historique du dépôt.
-
Conseil : Activez les notifications par mail automatique sur le dépôt distant, pour que tout le monde reçoive une alerte à chaque commit des collègues (avec un “bon message de commit” :-))
-
il existe de nombreuses options pour permettre à git d’afficher des
diff
entre deux commits tenant compte des mots, commegit diff --word-diff
.